# code/__DEFINES/maths.dm

SIGN | Gets the sign of x, returns -1 if negative, 0 if 0, 1 if positive |
---|---|

WRAP_UP | Increments a value and wraps it if it exceeds some value. Can be used to circularly iterate through a list through `idx = WRAP_UP(idx, length_of_list)` . |

TOBITSHIFT | Gets shift x that would be required the bitflag (1<<x) We need the round because log has floating-point inaccuracy, and if we undershoot at all on list indexing we'll get the wrong index. |

DT_PROB_RATE | Converts a probability/second chance to probability/delta_time chance
For example, if you want an event to happen with a 10% per second chance, but your proc only runs every 5 seconds, do `if(prob(100*DT_PROB_RATE(0.1, 5)))` |

DT_PROB | Like DT_PROB_RATE but easier to use, simply put `if(DT_PROB(10, 5))` |

DIAMOND_AREA | The number of cells in a taxicab circle (rasterized diamond) of radius X. |

## Define Details

### DIAMOND_AREA

The number of cells in a taxicab circle (rasterized diamond) of radius X.

### DT_PROB

Like DT_PROB_RATE but easier to use, simply put `if(DT_PROB(10, 5))`

### DT_PROB_RATE

Converts a probability/second chance to probability/delta_time chance
For example, if you want an event to happen with a 10% per second chance, but your proc only runs every 5 seconds, do `if(prob(100*DT_PROB_RATE(0.1, 5)))`

### SIGN

Gets the sign of x, returns -1 if negative, 0 if 0, 1 if positive

### TOBITSHIFT

Gets shift x that would be required the bitflag (1<<x) We need the round because log has floating-point inaccuracy, and if we undershoot at all on list indexing we'll get the wrong index.

### WRAP_UP

Increments a value and wraps it if it exceeds some value. Can be used to circularly iterate through a list through `idx = WRAP_UP(idx, length_of_list)`

.