Skills you must learn/have to do this:
- Playing Freeciv
- Change a rule set (for testing)
- Compile the Freeciv source code
- Get the Freeciv 2.6 source code from SVN
- C coding
- Create a patch
In Freeciv 2.6 it will be possible to create a rule set where a unit can do a spy action while transported over non native terrain. (Example: Land spy in a transport over Ocean Establishing an Embassy). It is also possible to change the rules so actions are illegal while transported no matter if they are over native terrain or not or even to require non native terrain. When no action is possible a message is given. If no units of the failing unit's type can do an action from inside a transport on non native terrain and it is inside a transport over non native terrain the player will be informed that this is the reason why it failed. Otherwise a generic message is given. This code is located in the function explain_why_no_action_enabled()* in the file server/unithand.c.
Your patch will give a message for the requirement that the unit isn't transported. Bonus: give a message for the situations were it is required that the unit is transported or is on non native terrain.
When this is done post your patch to our patch tracker.
To test your changes you will have to modify a rule set so a unit requires the property you wrote a message for in all situations. Action enablers live in the ruleset file game.ruleset. Move the unit using the keypad on your keyboard so the path finding won't stop you from trying the illegal action.
How to create a patch, get Freeciv 2.6 from SVN and compile Freeciv is documented online. You can find good introductions to C for the programming skill set you already have by using Google. Try to remember reading your patch before sending it to make sure that test data like ruleset modifications wasn't accidentally included.
* update: used to be a part of unit_move_handling()