Being myself a person, who joined this project in 2011, when it just went 0.3, I found it highly "non vanillish" in every possible way, except for VISUAL (visual replication was the only thing that developers could make), and something from not very reliable Ufopaedia.org (mostly gameplay info was taken not from the game observation, not CODE itself).
So, being a perfectionist I took "Ufo defense.exe" and reversed it. Completely. I made many corrections in the
https://ufopaedia.org, and actually by my effort favoured OpenXcom into rails of "gameplay replication" from not very viable "visual replication".
I given alot of actual deep info about vanilla x-com insides for the few actual contributors. Warboy became my friend and main "agent" towards OXC development. He's really good programmer, and v1.0 is actually obliged to him, his passion. Without him it would probably stuck at v0.6.
And if anything you find in OXC doubtful, in terms of being "vanilla", better blame me. Perhaps I didn't explain that correctly to him, or didn't understand that correctly myself. Explosion code for the AI was handled like 1.5-2 years ago methinks?... I don't really remember if that code is of Warboy or Daiky, but actually, looking into vanilla, I can say:
AI is using actual units as throw targets, if it sees them. If not - it trying to use NODES to make max damage.
if ( p_AI_Target_UnitPos_addr )
{
_x = p_AI_Target_UnitPos_addr->x;
_y = p_AI_Target_UnitPos_addr->y;
_z = p_AI_Target_UnitPos_addr->z;
}
else
{
nodeId = xc_BF_AI_Get_Node_Of_Maximum_Grenade_Damage(p_ObData_DAT[curitem->obdata_ref].weapon_damage);
if ( nodeId == -1 )
return;
_x = a_Routes_DAT[nodeId].x;
_y = a_Routes_DAT[nodeId].y;
_z = a_Routes_DAT[nodeId].z;
}
And please, stop pestering Warboy, if you want to see TFTD soon.
Thank you.