As outlined in Lament’s GDD, there will be two enemies that appear throughout all of the realms. One of which are the ‘Wroughts’
These Wroughts were described and explained in the GDD, which I analysed in this Research Post, the analysis looked like this:

These Wroughts are a melee enemy type which, compared to the whisper, are slower but have more HP.

Explaining the Wrought’s script
The “Stats” and “Health” Header shows various variables that can be changed or edited in the Unity editor, as mostof these data types are set to public, variable such as: speed, stoppingDistance, maxHealth etc. Furthermore there are references set in the Start() method or in the editor that the script can access, like the player’s position, or the Wrought attack hitbox.

In the Start() method, many aspects of the Wrought’s script is set, such as: The player’s transform (position in the scene) is set; Its currentHealth to its maxHealth and its isAttacking bool.
In the Update() method, the HandleMovement(), HandleAttack() and HandleLook() methods are all constantly being called.
The HandleMovement() method outlines how the Wrought moves, which is very similar to the Whisper’s HandleMovement() method, essentially, it checks whether its distance from the player is greater than the stoppingDistance float, if it is then it uses the Vector2.MoveTowards function to move the Wrought towards the player until its distance from the player is smaller than the nearDistance float.

Once the Wrought is within range to attack (When its distance to the player is less than the nearDistance float) and the cooldown for its attack is up (When the timeBetweenShots float is equal to zero) the HandleAttack() method is called.
This HandleAttack() method sets the timeBetweenShots float to the startTimeBetweenShots float, essentially resetting the attack cooldown. But if the Wrought is within distance to attack but the cooldown isn’t over, the cooldown counts down, timeBetweenShots -= Time.deltaTime;.
Once all the conditions are met, the ActivateAttackforSeconds (float duration) Coroutine is called; this sets the Wrought’s attack hitbox to active for a certain duration before turning it off after waiting a certain duration.
The HandleLook() method is used for the Wrought to attack in the direction. Firstly, a Vector3 called directionToPlayer finds the direction from the Wrought to the player, and sets its z direction to zero (as the game is 2D and not 3D only the x and y directions are needed)
It then checks if the directionToPlayer Vector3 = Vector3.zero, if this is the case then the player and the Wrought are directly on top of each other, in this case none of the following code is executed. if directionToPlayer > 0, a float called angle is created, then Unity does math using the Mathf.Atan2 function to calculate the angle from the Wrought to the Player in radians (A unit for angles) which is then converted to degrees using another function called Mathf.Rad2Deg
The Wrought is then rotated by this float called angle to face the Player, so that when the Wrought’s attack’s hitbox is activated, it is in the direction of the player.
Lastly, the TakeDamage() method is explained in a Player Development post.