I concur with the direction here 100%. We may not want to remove legacy DNA costs for backward compatability reasons, but I'm all for focusing on morphological action costs.
That said, where possible, I favor having costs be imposed implictly as a fucntion of physics instead of adding tons of new explicit costs for each and every possible action. For example, if we completed the code necessary for tie drag, then in addition to enabling swimming and other more realistic modes of locomotion, the cost asccessed for moving a tie would be implicitly proportional to the force necessary to move the tie against the fluid resistance/friction of the tie and tied bot (we might want to move to an effort-based paradym instead of an absolute paradym like has been discuessed previously for rotation so that bots deicde how much effort to apply to the movement attempt and pay a cost proportional to this instead of ensuring the movement and charging whatever it takes). The cost of a multibot or a battery bot moving would be impacted by the tie drag forces. Instead of adding a new entry line for a new cost, nrg loss would be imposed implictly as a function of and proportional to the physical actions.
Another idea to simplify and standardize costs would be to agree on a (optional) vector of store costs for every location in the memory space and then allow the user to have a single setting that simply scales this vector - a pre-defined cost-set if you will. Since most morphological actions are associated with a store/inc/dec to a memory location, we just decide how expesnive each location should be relative to each other. Stores to .shoot might cost 10X, stores to .up might cost 5X the value, stores to .eyeNWidth might cost 2X, stores to non-sysvar locations might be free. You can store to the same location as many times per cycle as you want, you only get charged for one. Reads from memory are always free.
Another idea is to charge costs using a non-nrg based effeciency currency based upon the frequency or infrequency of certain events. For example, if the bot has had no nrg intake with a certain number of cycles, regardless of it's absolute nrg level, extoll a "hunger" effectiveness cost by reducing any movement value it stores by X% due to hunger or by reducing it's eye sight distance by X% until it eats again. If it goes too long without eating, kill it even if it has nrg. Similar things could be done for going to long without reproducing, etc.
Additional morpholigcal cost ideas:
Costs for changing eye widths, direction or changing the focus eye.
Non-linear movement costs - going 2X faster takes 4X nrg, etc.
Tie length, angle, rigidity changes.
FYI, there is already a cost for voluntary rotational movement.
Here's another idea. The reason we have costs is to provide selective pressure, right? Survival of the most effecient and all that? Well, in nature, most selective pressure isn't a function of how much nrg it takes to chase or flee or bite or produce posion or move our arms. Its about behaviour that influences competecy that ultimatly impacts competitive success. Outrunning the lion is often less about speed and more about strategies of avoiding being the one closest to the lion or letting a lion get too close to the herd or confusing the lion with lots of vertical stripes. Said another way, most organisms don't starve, they get eaten with lots of nrg still left in their tank. There are other ways to provide selective pressure besides nrg costs. One might be a built-in, population level driven super preditor that adjusts to the human defined targets. As bot populations rise above some target, the built-in preditor gets better a culling the pack. It moves a little faster or shoots a little better or sees a little better or increases in numbers. As popualtions fall, it gets worse at doing it's job. At some level, it does nothing. Tada! Selective pressure without costs!