this:
Code:
float Horizontal = Input.GetAxis("Horizontal");
float Vertical = Input.GetAxis("Vertical");
Vector3 Movement = new Vector3(Horizontal, 0, Vertical);
rb.velocity = Movement * speed;
will always provide a value in worldspace, because your x/y input values are always absolutes between -1 and 1.
if you think of your screen as a 2D grid with 0,0 at the centre, then adding together the X and Y positions of the mouse then clamping to 1 will show a point around that centre which it will then move towards at [speed] every frame.
what you probably want to do (if I'm reading your question right) is move using localspace values - so using (transform.forward * Vertical) as your 'forward and backward' values for example, which will take into account what your object locally considers 'forward' to be instead of worldspace values of 'forward' being a number between -1 and 1.
I'd really recommend going through at least
the start of the Unity Tanks tutorial to get an idea about worldspace vs localspace transforms; just following it for the first couple of sections then putting your camera as a child object of the tank rather than as a top down camera will give you a classic Doom style tank control W/S forward back, A/D turn left and right style FPS setup, which you should then be able to turn into A/D strafe, mouselook X turn left and right
You might be better asking what your specific goal is, because to me an Events system, NPC AI schedules and Sidequests are all drastically different things.