standard C is imperative, 'procedural', yet can be used with OOP.
There are several books and websites that discuss methods for doing so.
Many in the industry find 'OOP' to be 'OO-Overrated'.
Another similar paradigm/method that should be considered is 'ECS' for 'Entity-Component-System' which is valid for much of GMS2.
You have many components, paths, sprites, 'objects', scripts (which may be compositions of other scripts) that are used to create an 'Entity' or GameMaker 'Object'. These interact based on systems, the phyisics systems, the particle systems, the collision detection systems etc.
ECS is different from OOP largely in that in ECS something 'has a' instead of being classified as 'is a'.
Personally, I am leaning towards ECS in most of my work over the OOP mindset, which to many, is confusing, far from intuitive and makes programming harder. OOP was a huge buzzword in the late 90s, and the marketing and propaganda drove a lot of people to it. In a large production house, such as say 'Big Accounting Software Inc.', where you have dozens, or hundreds of programmers working on the same software, OOP can help keep one team from interfering with or 'breaking' another team's code. Even there, it is often ridiculed.
'Object' in GM, means 'a thing' and GMS2 really, is much closer to the ECS paradigm, than an OOP one.