Alright, nevermind I got Pro back.
I’m amused that you opt to use GM’s built-in solid and gravity features, DF. Personally I wouldn’t recommend it, because while it is pretty reliable, it keeps every and any other object from going through said solid object (even if that other object isn’t solid). That’s been my experience, anyways, but now’s not the time, I’m sure.
So far I’ve created a script that will determine the upward slope of the ground to either side of Samus, inside plausible limits (2 to 1/7). I don’t know how useful it will be, however. I figured it might be handy in calculating how much slower Samus’ running speed should be while she runs up any given slope. If this is retarded and unnecessary and I’ve strayed off-track, please let me know xP.
Edit: Yeah, I’m not doing so well with the slope-running code xP. Not complaining, but the only slope-utilizing platform engines I’ve both seen (editable) and made in GM used their own gravity system. I guess I’ll just have to leave this part up to someone else .
In case anyone wants those slope-returning scripts:
// version 1.0
// author: Saber Mage
// date 11-18-2008
//Use this script to return the upward slope of the ground beside Samus.
//Returns 0 if the ground is relatively flat.
//Returns 99 if the ground is too high to walk up.
//argument0 - The supposed edge of the ground where Samus collides with it.
//argument1 - The base of the ground - basically the bottom of Samus’ bounding
// ? ? ? ? ? ?box.
//argument2 - The direction in which to check for a slope. (-1 or 1)
//Check vertically. If it is too high to walk up, return 99.
for(i = 0; i < 3; i += 1)
if(i == 3)
//Check horizontally from vertical position. If vertical position is > 1, this usually won’t get any higher than 1.
for(j = 1; j < 8; j += 1)
I apologize for the lack of formatting - it was stripped when copy-pasted.
I know it’s not that useful right now for it to be so extensive, but I wrote it with possibly steeper and less-steep slopes in mind. I also had a variant where I replaced return i/j; with return 1-((i/j)/3); for a return value useful for reducing running speed limits.