Can Move Object (precise) Be Used to Pick Locks?

Under Move Objects

This effect can move objects, but cannot perform tasks of fine manipulation (like untying knots, typing, or manipulating controls) without the Precise modifier.

Then The Precise Modifier

Precise: Move Object with this modifier can be used for tasks involving fine manipulation

So do my Ranks in Move Object, with precise, become my Technology roll to pick a lock? If not, why? I’ve asked this on reddit, and people weren’t citing pages or specific blocks of text (and/or explaining it to me in a way I understood)

My character is a Metal Manipulation concept, and I thought it would be cool to touch a lock and have it open itself (if it was mechanical and made of metal… my power is also limited(metal) and Close (must touch it))

OOP: Instantiate plugin, passing parameters and accessing super class properties from sub class object

I would like to know the "best" – OOP-way – and WP-compatible – format for instantiating an object, while passing arguments ( which are defined as properties in the parent class ) – which are then cleanly and correctly available to all sub classes, which extend the parent.

I would like to know how to make $ this->slug ( the parent prop ) available cleanly within the sub class, without having to pass the arguments to this class constructor.

The example code concept below works, but something smells wrong:

<?php  // plugin.php  namespace Q\Plugin;  // If this file is called directly, Bulk! if ( ! defined( 'ABSPATH' ) ) {     return; }  // autoloader ## require_once __DIR__ . '/autoload.php';  // Define Class ## class Plugin {      // class properties ##     protected $  slug     = false;      // construct ##     public function __construct( Array $  args = [] ) {          // set class props, if defined - check using null coalescing operator ##         $  this->slug     = $  args['slug'] ?? false ;      }      // public init callback ##     public function init() {          // setup CPT ##         $  cpt = new \Q\Plugin\CPT([             'slug'      => $  this->slug,         ]);         $  cpt->init();      }  }  // instantiate the plugin class and make the returned object available as a (optional) global variable  ## global $  q_plugin; $  q_plugin = new Plugin([     'slug'      => 'q_cpt', // cpt slug -- singular ## ]); $  q_plugin->init();  // NAMESPACE/cpt.php  namespace Q\Plugin\CPT;  class CPT extends \Q\Plugin {      // construct ##     public function __construct( Array $  args = [] ) {          // store passed args ##         $  this->args = $  args;      }      // public init callback ##     public function init() {          // sanity ##         if(              ! isset( $  this->args['slug'] )          ){              error_log( 'Error in params passed to '.__CLASS__ );              return false;          }          // $  this->args['slug'] is now available to use in register_post_type function         // BUT, I would like to know how to make $  this->slug ( the parent prop ) available cleanly, without having to pass the arguments to this class constructor      }  } 

Thanks!

How to make a game object from several game objects in Unity?

Dear Stackoveflow fourm I have programmed a great music game. Unfortunately there is a problem. In my game there are so many objects that my smartphone can’t load the game properly. I have nowhere to find out how to make an object out of many objects. If someone knows how to do it I would be very happy!

My Script:

   using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.SceneManagement;  public class line : MonoBehaviour {          //Please attach me to the line, then set  dline,tail,mcamera,road,decorates,dieeff.     //You can add more to make this better!     public GameObject dline, tail, mcamera, road, decorates, dieeff;      private GameObject tempgo, tempdia, tempcr;      public bool direction, alive, start, load, roadmaker;      public float cameraspeed, temprm;      public Vector3 offset, tempcrgo;      private GameObject[] dia, cr;      List<GameObject> go = new List<GameObject>();      void Start()     {         start = false;         load = true;         alive = true;         //find diamonds and crowns         dia = GameObject.FindGameObjectsWithTag("dia");         cr = GameObject.FindGameObjectsWithTag("crown");         //     }      void Update()     {         if (load == true)         {             //save the initial distance between camera and line             offset = mcamera.transform.position - dline.transform.position;             cameraspeed = 0.03f;             load = false;             //         }         //restart         if (Input.GetKeyDown(KeyCode.R) == true)         {             SceneManager.LoadScene("main");         }         //         if (start == false && alive == true)         {//start game             if (Input.GetMouseButtonDown(0) == true || Input.GetKeyDown(KeyCode.Space) == true)             {                 start = true;                 dline.GetComponent<AudioSource>().enabled = true;             }          }//          if (start == true)         {//turn             if (Input.GetMouseButtonDown(0) == true || Input.GetKeyDown(KeyCode.Space) == true)             {                 if (direction == true)                 {                     direction = false;                 }                 else                 {                     direction = true;                 }             }         }//          //build road/wall more efficiently         if (roadmaker)         {             temprm += 1;             //why there is temprm?to reduce the ammount of roads             //why build one when click?to ensure there is road/wall when line turns(or it will look weird)             if (temprm % 6 == 1 || Input.GetMouseButtonDown(0) == true || Input.GetKeyDown(KeyCode.Space) == true)             {                 GameObject.Instantiate(road, dline.transform.position + new Vector3(3, 0, -3), dline.transform.rotation);                 GameObject.Instantiate(road, dline.transform.position + new Vector3(-3, 0, 3), dline.transform.rotation);             }// // //         }         else         {//when you play ...I dont put the part in Update but if(roadmaker) because these actions will create new gameobject and interfere the copying of road             GameObject.Instantiate(tail, dline.transform.position, dline.transform.rotation);             if (Input.GetMouseButtonDown(0) == true || Input.GetKeyDown(KeyCode.Space) == true)             {                 if (direction == true)                 {                     go.Add(GameObject.Instantiate(decorates, dline.transform.position + new Vector3(8, -9, -5), dline.transform.rotation));                 }                 else                 {                     go.Add(GameObject.Instantiate(decorates, dline.transform.position + new Vector3(-5, -9, 8), dline.transform.rotation));                 }             }         }//     }      void FixedUpdate()     {//smooth camera         mcamera.transform.position = Vector3.Lerp(mcamera.transform.position, offset + dline.transform.position, cameraspeed);         //         //some 'animations' .I didnt use animation component because I dont know how it works in Unity :(         foreach (GameObject tempgo in go)         {             tempgo.transform.position += new Vector3(0, 0.2f, 0);         }          foreach (GameObject tempdia in dia)         {             tempdia.transform.localEulerAngles += new Vector3(0, 2, 0);             if (Mathf.Abs(dline.transform.position.x - tempdia.transform.position.x) < 1 && Mathf.Abs(dline.transform.position.z - tempdia.transform.position.z) < 1 && tempdia.transform.localScale.z > 0)             {                 tempdia.transform.localScale -= new Vector3(0.3f, 0.3f, 0.3f);             }         }         foreach (GameObject tempcr in cr)         {             tempcr.transform.localEulerAngles += new Vector3(0, 2, 0);             if (Mathf.Abs(dline.transform.position.x - tempcr.transform.position.x) < 2 && Mathf.Abs(dline.transform.position.z - tempcr.transform.position.z) < 2 && tempcr.transform.localScale.z > 0)             {                 tempcr.transform.localScale -= new Vector3(0.26f, 0.26f, 0.26f);                 tempcrgo = tempcr.transform.position;             }             if (tempcr.transform.localScale.z <= 0)             {                 tempcrgo += new Vector3(Random.Range(-2f, 2f), Random.Range(-1f, 2f), Random.Range(-2f, 2f));                 tempcr.GetComponent<Light>().enabled = true;                 tempcr.transform.position = Vector3.Lerp(tempcr.transform.position, tempcrgo, 0.02f);              }         }         //         if (start == true && alive == true)         {//how the line move             if (direction == true)             {                 dline.transform.position += new Vector3(0.3f, 0, 0);             }             else             {                 dline.transform.position += new Vector3(0, 0, 0.3f);             }         }//     }      void OnCollisionEnter(Collision x)     {//when die...         if (x.collider.tag == "wall")         {             alive = false;             mcamera.GetComponent<AudioSource>().enabled = true;             dieeff.SetActive(true);         }//           //when complete the level...         if (x.collider.tag == "Finish")         {             offset = offset + offset + offset + offset;             cameraspeed = 0.01f;         }//     } } 

`

Game Scene

Video Link:

https://drive.google.com/file/d/1dqIqu6tx5thNbCJ1jNndXEJY_a9JJGGe/view?usp=sharing

Heat Metal on Animated Armour – Can something be both an object and a creature? [duplicate]

Heat metal says (Emphasis mine) :

Choose a manufactured metal object, such as a metal weapon or a suit of heavy or medium metal armor, that you can see within range. You cause the object to glow red-hot. Any creature in physical contact with the object takes 2d8 fire damage when you cast the spell. Until the spell ends, you can use a bonus action on each of your subsequent turns to cause this damage again.

The target in this case was Animated armour (which is a construct).

In our session we did rule that it could work just because it fit well with the story. We played it out that the metal was melting and deforming so the joints wouldn’t work. However the issue we had comes down to:

Can something be both an object and a creature?

The armour needs to be a manufactured object for the spell to work (and it specifically mentions a suit of metal armour) but also needs to be a creature to take the damage.

2d gravity simulator – smaller object orbiting towards center of bigger object

In my libgdx test game, I have initially created 2 circle objects (stellar) about which I will say more in details below. However, my goal is to simulate gravity in 2d, where smaller object orbits towards center of bigger object (just like earth orbits sun) but closer and closer to the center of bigger.

So, I have created the following:

  • stellar1: smaller, 10px radius, 10 mass, dynamic (can move), initial position -160×90, velocity (0,0), accelerator (0,0)
  • stellar2: bigger, 30px radius, 30 mass, static (cannot move), initial position 0x0, velocity (0,0), accelerator (0,0)

Here is also a screenshot, just to have a picture: enter image description here

I will give the full code below of what I did so far, before that I want to mention I have 2 approaches, StellarTest1 and StellarTest2.

First StellarTest1, I’ve tried to add some extra values like 1000f to both x and y just to see something in action like:

velocity.x += 1000f * acceleration.x * deltaTime; velocity.y += 1000f * acceleration.x * deltaTime; 

Resulting in – smaller object gets towards the center of the bigger object, but once it reaches the center of bigger, the smaller object gets evicted to the opposite side. Not to mention how 1000f is not the correct value in the size of this coordinate system, but I am concerned about following computation:

acceleration.x = gravityForce * (diffX / distance) acceleration.y = gravityForce * (diffY / distance) 

Code StellarTest1:

public class StellarTest1 extends AbstractTest {      private Stellar stellar2, stellar1;      public StellarTest1(Game game) {         super(game);     }      @Override     public void create() {         game.getCartesianGrid().setEnabled(true);          // smaller  stellar         float startX = -160;         float startY = 90;         float radius = 10;         float mass = 10;         stellar1 = new Stellar(                 startX, startY,                 radius, mass,                 new Color(102, 188, 217, 100f)         );          // bigger stellar         startX = 0;         startY = 0;         radius = 30;         mass = 30;         stellar2 = new Stellar(                 startX, startY,                 radius, mass,                 new Color(252, 236, 3, 100f)         );         stellar2.updatable = false; // bigger object will not update, in other words no motion          stellar2.setOther(stellar1);         stellar1.setOther(stellar2);     }      @Override     public void update(float deltaTime) {         if (!updatable) {             return;         }         stellar2.update(deltaTime);         stellar1.update(deltaTime);     }      @Override     public void draw() {         if (!drawable) {             return;         }         stellar2.draw();         stellar1.draw();     }      private class Stellar {          Circle circle;         Vector2 velocity;         Vector2 direction;         Vector2 acceleration;         float mass, radius;         boolean updatable;         Stellar other;          public Stellar(                 float startX, float startY,                 float radius, float mass,                 Color color) {             this.radius = radius;             this.velocity = new Vector2(0, 0);             this.acceleration = new Vector2(0, 0);             this.mass = mass;             this.radius = radius;              circle = new Circle(game,                     color,                     startX, startY,                     radius);              this.updatable = true;         }          public void update(float deltaTime) {             if (!updatable) {                 return;             }             float diffX = other.circle.x - circle.x;             float diffY = other.circle.y - circle.y;              float G = 2f;             float mass = G * (other.mass - this.mass);             float distance = (float) Math.sqrt(Math.pow(diffX, 2) + Math.pow(diffY, 2));             float gravityForce = (float) (mass / Math.pow(distance, 2));              acceleration.x = gravityForce * (diffX / distance);             acceleration.y = gravityForce * (diffY / distance);              velocity.x += 1000f * acceleration.x * deltaTime;             velocity.y += 1000f * acceleration.y * deltaTime;              circle.x += velocity.x * deltaTime;             circle.y += velocity.y * deltaTime;         }          public void draw() {             game.getShapeRenderer().begin(ShapeRenderer.ShapeType.Filled);             circle.draw();             game.getShapeRenderer().end();         }          public void setOther(Stellar other) {             this.other = other;         }     }  } 

Second StellarTest2, in this example, you will see same code, except I am using here angle in degrees:

float angleInDegrees = MathUtils.atan2(diffY, diffX) * MathUtils.radiansToDegrees; ... acceleration.x = gravityForce * MathUtils.cos(angleInDegrees * deltaTime); acceleration.y = gravityForce * MathUtils.sin(angleInDegrees * deltaTime); 

In this test, I did not have to add some extra velocity to move smaller object. Also I achieved that smaller object will make a solid curve, but will not get dragger in the center. Instead, after some time it will evict out. However, still I face the issue that smaller object keeps curving in and out and towards center. Yet, I am curious if cos and sin is necessary here, and perhaps StellarTest1 is right approach.

Code StellarTest2:

public class Stellar2Test extends AbstractTest {      private Stellar stellar1, stellar2;      public Stellar2Test(Game game) {         super(game);     }      @Override     public void create() {         game.getCartesianGrid().setEnabled(true);          float startX = -160;         float startY = -90;         float radius = 10;         float mass = 30;         stellar2 = new Stellar(                 startX, startY,                 radius, mass,                 new Color(102, 188, 217, 100f)         );          startX = 0;         startY = 0;         radius = 30;         mass = 30;         stellar1 = new Stellar(                 startX, startY,                 radius, mass,                 new Color(252, 236, 3, 100f)         );         stellar1.updatable = false;          stellar1.setOther(stellar2);         stellar2.setOther(stellar1);     }      @Override     public void update(float deltaTime) {         if (!updatable) {             return;         }         stellar1.update(deltaTime);         stellar2.update(deltaTime);     }      @Override     public void draw() {         if (!drawable) {             return;         }         stellar1.draw();         stellar2.draw();     }      private class Stellar {          Circle circle;         Vector2 velocity;         Vector2 acceleration;         float mass, radius;         boolean updatable;         Stellar other;          public Stellar(                 float startX, float startY,                 float radius, float mass,                 Color color) {             this.radius = radius;             this.velocity = new Vector2(0, 0);             this.acceleration = new Vector2(0, 0);             this.mass = mass;             this.radius = radius;              circle = new Circle(game,                     color,                     startX, startY,                     radius);              this.updatable = true;         }          public void update(float deltaTime) {             if (!updatable) {                 return;             }             float diffX = other.circle.x - circle.x;             float diffY = other.circle.y - circle.y;             float angleInDegrees = MathUtils.atan2(diffY, diffX) * MathUtils.radiansToDegrees;              float G = 2;             float mass = (G * (other.mass * this.mass));             float distance = (float) Math.sqrt(Math.pow(diffX, 2) + Math.pow(diffY, 2));             float gravityForce = mass / distance;              acceleration.x = gravityForce * MathUtils.cos(angleInDegrees * deltaTime);             acceleration.y = gravityForce * MathUtils.sin(angleInDegrees * deltaTime);              velocity.x += acceleration.x * deltaTime;             velocity.y += acceleration.y * deltaTime;              circle.x += velocity.x * deltaTime;             circle.y += velocity.y * deltaTime;         }          public void draw() {             game.getShapeRenderer().begin(ShapeRenderer.ShapeType.Filled);             circle.draw();             game.getShapeRenderer().end();         }          public void setOther(Stellar other) {             this.other = other;         }     }  } 

How can I make an object (nearly) indestructible?

Is there any way to protect an object from destruction, as a player? If so, how expensive would it be?

Let’s say I become a lich — is there any spell/ritual/artifact/other that can make my phylactery indestructible? (Apart from hiding it, obviously.) I’m thinking of Voldemort’s Horcruxes, wich were pretty much a PITA to destroy.

Any means mentioned in official source is good, and needing to use multiple things together is fine.

Petrification and Animate object; Can you animate a petrified person? [duplicate]

I had a friend of mine asked me if someone could animate a creature that a gorgon or basilisk had turned to stone, and I couldn’t answer.

The Petrified status has one of the following as part of its rules.

A petrified creature is transformed, along with any nonmagical object it is wearing or carrying, into a solid inanimate substance (usually stone). Its weight increases by a factor of ten, and it ceases aging.

So, due to petrification, they are transferred into a solid, inanimate substance. Would that mean that a spell like animate object would be able to temporarily animate a petrified individual? Or does Petrification count as a magical condition and thus animate object cannot be used on the petrified individual? RAW, I’m guessing it can’t be used as the Petrified individual is still considered a creature.

Even without animate object, would you still be able to animate a petrified creature without removing the petrified status, or is it just impossible to animate petrified creatures?