The first can be solved by abolishing unreasonable over-specialization
in the skill list. Just have a SHIPBUILDING skill. Then maybe assign
different difficulty levels to building each type of ship, e.g.
USE SHIPBUILDING SCHOONER
might be at an effective -1 to your skill, whereas
USE SHIPBUILDING GALLEY
might be at an effective -3, and
USE CONSTRUCTION REPAIR "CASTLE OF THE ART"
might be at an effective -1, but
USE CONSTRUCTION FORTIFY "CASTLE OF THE ART"
might be at an effective -3. Ergo, no need for horribly complicated
dependency graphs, trees etc.
ASSASSINATE should not be a skill at all, but rather a very high level
application of the STEALTH skill together with some COMBAT ability
(in reality, those are the two skills that assassins use, there is no
special skill for assassination that is separate from other skills).
TELEPORT is a spell and as such should be capable of being learned only
after study of the appropriate magic skill. Incidentally, I don't think
there should be skill levels with magic spells, as I understand there are
now, just list which spells are known, and if a skill level is required,
use the general magic skill, or the skill in weather magic, combat magic
or whatever, if you like. (Similarly if we were doing a system for
computer programming skill, it would be inappropriate to have separate
skill levels for different computer programming languages; instead, we would
just implement a programming skill (or perhaps separate ones for systms
programming, games programming etc.) and a list of the languages known.)