The question isn't very clear because you claim you understand programming basics (syntax, flow of logic, data structures, etc) and yet are unable to understand what things are doing in the source.
While redux isn't exactly 'clean' in terms of documentation, things are labled half decently. It's pretty obvious what each function should be doing because it's what the function is called (there's plenty of exceptions, again I'm aware it's a mess).
Can you give us a SPECIFIC question on what it is you don't understand?
NPCs are really simple. There's a constructor where you set the ID for the script and the optional avatar the NPC will use when you talk to it.
Code:
public NPC_102093(Game_Server.Player _client)
:base (_client)
{
ID = 102093;
Face = 123;
}
You then have a run function which accepts the parameters Game_Server.Player (the player using the script) and a linkback (which npc option they have used)
Code:
public override void Run(Game_Server.Player _client, ushort _linkback)
{
Responses = new List<NpcDialogPacket>();
AddAvatar();
switch (_linkback)
{
case 0:
AddText("What can I do for you?");
AddOption("Enter the guild area.", 1);
AddOption("Just passing by.", 255);
break;
case 1:
_client.ChangeMap(1038, 350, 339);
break;
}
AddFinish();
Send();
}
We create a list of responses, add the avatar and then perform a switch statement based on what option the client has used. Depending on the option we either respond to the client (addtext, addoption, etc) or perform actions (change map)
You should be able to read through BASIC npcs like this to get an understanding of how the source is structured. You can then work your way towards larger things in terms of flow of logic but honestly it should be pretty simple to understand the basic flow of logic if you are familiar with entry level programming concepts.
Then again, I could have misunderstood the question and you could be referring to something completely different.