First of all, hello to everybody! Just registered on this forum. I've been playing Kam (Remake) for a while now, but now that we can do some serious scripting I thought I should engage in the forums as well. Scripting is AWESOME by the way

even though I don't have a programming background.
Some ideas:
1 - using modular scripts, i.e. several .script files per mission. This would allow users to write independent 'mods' that change the behavior of a mission. For multiplayer, mods could be allowed/disallowed or turned on/off by simple commands, maybe? Just an idea. So what kind of mods do I mean? For example, I have built a (singleplayer) script that automatically trains serfs, laborers, citizens and recruits for the HUMAN player, based on the number of buildings and axes, leather armor and iron amor in your barracks. Basically, this mod means you never have to bother looking at your school again. Yes, I know that makes gameplay boring, but at the same time, it's awesome!

2 - in light of the previous remark: a direct way to query the current queue in the school (currently I have to do that in a rather cumbersome manner)
3 - possibility to subtract wares from a storehouse. For example, Actions.GiveWares(ActivePlayer, Timber, -10) will result in 65536 timber. I'd like this function because now I cannot command enemy serfs to rob my storehouse.
4 - command to change the radius in which units, warriors or buildings reveal the fog
EDIT:
5 - a new event: procedure OnUserClick (PlayerThatClicked: integer, ClickPositionX: integer, ClickPositionY: integer) or something like that, to do something when you click your mouse.
6 - a new State: RoadFieldWinefieldAt(PositionX: integer, PositionY: integer) returns: Integer -1 for nothing, 1 for road, 2 for field, 3 for winefield. Because neither HouseAt,UnitAt or GroupAt seem to be able to see whether there is a road, field or winefield somewhere.
7 - a new action: DelayedExecution (any action or function or procedure, DelayInTicks) returns DelayedActionID:integer (???). Because if I want to schedule a lot of time-based actions in a row, I currently need to do that by using a lot of variables to remember the amount of GameTime that has expired and/or check through OnGameTick whether the actions are allowed to be executed.
8 - a new event: OnConsoleInput(PlayerSubmittingTheInput: Integer, InputString: string) to allow simple commands that users can enter in the console during the game, for example to turn on/off modular parts of the script. Just like for example is done in minecraft.
Some of my other ideas I saw already mentioned in other topics, but I'm sure I will think of more the coming weeks
