Difference between revisions of "Inc/dec"

From WikiManual
Jump to: navigation, search
(Post 2.4)
Line 28: Line 28:
  
 
==Post 2.4==
 
==Post 2.4==
All memory locations can be modified with inc/dec, but inc/dec now cost nrg. <s>I believe it's equal to the cost of a store.</s> Cost is equal to 1/10th of a store command.
+
All memory locations can be modified with inc/dec, but inc/dec now cost nrg. Cost is equal to 1/10th of a store command.
  
 
==Value freezing using inc/dec==
 
==Value freezing using inc/dec==

Revision as of 03:50, 10 October 2005

Increase/Decrease These operators, inc(increase) and dec(decrease), are some of the most useful but are infrequently used. They work by either decreasing or increasing a memory location by 1.

Example

50 inc

adds 1 to *50. When more are used simultaneously the effects are cumulative.

For Example:

50 dec
50 dec
50 dec

Subtracts 3 from *50. One of the more popular uses of this is for birth tie removal.

cond
start
.tie *.robage 1000 mult add inc
.deltie *.robage 1 sub 1000 mult add inc
stop

It has also been used effectivly as an inter-gene signal and method to "freeze" values.

Pre 2.4

Not all locations can be handled with them, memlocs 1-8(more?) can not be inc/dec. This is to ensure that the bots are required to expend some energy.

Post 2.4

All memory locations can be modified with inc/dec, but inc/dec now cost nrg. Cost is equal to 1/10th of a store command.

Value freezing using inc/dec

This technique allows you to "freeze" values or to raise/lower a number to a value and then keep it there. This is best used for when you need a value at a constant number, but without the cost of continously storing it.

' Basic method to demonstrate freezing
' Will keep .tieloc at -1 permanently
cond
start
.tieloc *.tieloc dup div mult inc
.tieloc dec
stop 'More complex method demonstrates freezing
     'at a value with .ploc=7
cond
start
  'When *.ploc = 7 dec by 1
.ploc *.ploc 7 sub 1000 mult add dec
.ploc inc
stop

Operators