Questions 1, 2, and 3... Yes you can do all that. See below a list of possible settings.
Surface@ GetSurface( const String&) @ ObjectMesh
void SetDetailMap( const String&, const String&) @ ObjectMesh
void SetDetailMap( const String&, Image@) @ ObjectMesh
void SetDiffuseMap( const String&, const String&) @ ObjectMesh
void SetDiffuseMap( const String&, Image@) @ ObjectMesh
void SetNormalMap( const String&, const String&) @ ObjectMesh
void SetNormalMap( const String&, Image@) @ ObjectMesh
void SetSpecularMap( const String&, const String&) @ ObjectMesh
void SetSpecularMap( const String&, Image@) @ ObjectMesh
void SetTexture( const String&, const String&) @ ObjectMesh
void SetBlendMode(int) @ Surface
void SetColor( float, float, float) @ Surface
void SetColour( float, float, float) @ Surface
void SetDetailAmount( float) @ Surface
void SetDiffuse( float) @ Surface
void SetFlag( int, bool) @ Surface
void SetFlags( int) @ Surface
void SetLuminosity( float) @ Surface
void SetShinyness( float) @ Surface
void SetSmoothingAngle( float) @ Surface
void SetSpecular( float) @ Surface
void SetTextureFlag( int, int, bool) @ Surface
void SetTextureFlags( int, int) @ Surface
void SetTextureOffset( float, float) @ Surface
void SetTranslucency( float) @ Surface
void SetTransparency( float) @ Surface
You would set it up like this...
//pseudo code
Object @ YOUR_OBJECT = GetGameManager().GetWorld().GetObject( "YourObjectsName");
ObjectMesh@ YOUR_MESH = YOUR_OBJECT.GetMesh("YourObjectsMeshName");
YOUR_MESH.SetDetailMap( "OldMap", "NewMap"); // will change the detail map
YOUR_MESH.SetDiffuseMap( "OldMap", "NewMap"); // will change the diffuse map
//... and so on
// to adjust the values of a particular surface would go something like...
Surface@ YOUR_SURFACE = YOUR_MESH.GetSurface( "YourSurfaceName");
YOUR_SURFACE.SetBlendMode("SomeInterger");
SQA... You can change the ambient light like this...
GetGameManager().GetWorld().SetAmbientColour( Red,Green,Blue);
And I
THINK you have to set up a "custom object" for your sky in order to be able to manipulate it dynamically. The sky object's OPR would reference a script that would control the sky.