diff --git a/docs/reference.xml b/docs/reference.xml
index a45a966c..1952feab 100644
--- a/docs/reference.xml
+++ b/docs/reference.xml
@@ -219,6 +219,69 @@
+
+ Performs a subtraction.
+
+
+
+
+
+
+
+
+ Performs a multiplication.
+
+
+
+
+
+
+
+
+ Performs an integer division.
+
+
+
+
+
+
+
+
+ Subtracts two floating-point numbers.
+
+
+
+
+
+
+
+
+ Adds up two floating-point numbers.
+
+
+
+
+
+
+
+
+ Performs a floating point multiplication.
+
+
+
+
+
+
+
+
+ Performs a division with floating-point precision.
+
+
+
+
+
+
+
Adds a value to an alias.
@@ -246,70 +309,81 @@
- Multiplies a value and an alias.
+ Multiplies an alias by a value.
Example: *= foo 1337
-
+
-
- Performs a subtraction.
+
+ Divides an alias by a value.
+
+
+ Example: div= foo 1337
+
+
-
-
-
-
-
-
-
- Subtracts two floating-point numbers.
-
-
-
-
-
-
-
-
- Adds up two floating-point numbers.
-
-
-
-
-
-
-
-
- Performs a multiplication.
-
-
-
-
-
-
-
-
- Performs an integer division.
-
-
+
-
-
- Performs a division with floating-point precision.
+
+ Adds a floating-point value to an alias.
+
+
+ Example: +=f foo 13.37
+
+
-
-
+
+
+
+
+
+
+ Subtracts a floating-point value from an alias.
+
+
+ Example: -=f foo 13.37
+
+
+
+
+
+
+
+
+
+ Multiplies an alias by a floating-point value.
+
+
+ Example: *=f foo 13.37
+
+
+
+
+
+
+
+
+
+ Divides an alias by a floating-point value.
+
+
+ Example: div=f foo 13.37
+
+
+
+
+
-
@@ -428,15 +502,6 @@
-
- Performs a floating point multiplication.
-
-
-
-
-
-
-
Random value
diff --git a/source/src/command.cpp b/source/src/command.cpp
index b941fcc0..31e002da 100644
--- a/source/src/command.cpp
+++ b/source/src/command.cpp
@@ -266,7 +266,7 @@ void modifyvar(const char *name, const char *arg, char op)
case '+': val += argval; break;
case '-': val -= argval; break;
case '*': val *= argval; break;
- case '/': val /= argval; break;
+ case '/': val = argval ? val/argval : 0; break;
}
switch(id->type)
{
@@ -303,7 +303,7 @@ void modifyfvar(const char *name, const char *arg, char op)
case '+': val += argval; break;
case '-': val -= argval; break;
case '*': val *= argval; break;
- case '/': val /= argval; break;
+ case '/': val = (argval == 0.0f) ? 0 : val/argval; break;
}
switch(id->type)
{
@@ -319,16 +319,20 @@ void modifyfvar(const char *name, const char *arg, char op)
void addeq(char *name, char *arg) { modifyvar(name, arg, '+'); }
void subeq(char *name, char *arg) { modifyvar(name, arg, '-'); }
void muleq(char *name, char *arg) { modifyvar(name, arg, '*'); }
+void diveq(char *name, char *arg) { modifyvar(name, arg, '/'); }
void addeqf(char *name, char *arg) { modifyfvar(name, arg, '+'); }
void subeqf(char *name, char *arg) { modifyfvar(name, arg, '-'); }
void muleqf(char *name, char *arg) { modifyfvar(name, arg, '*'); }
+void diveqf(char *name, char *arg) { modifyfvar(name, arg, '/'); }
COMMANDN(+=, addeq, ARG_2STR);
COMMANDN(-=, subeq, ARG_2STR);
COMMANDN(*=, muleq, ARG_2STR);
+COMMANDN(div=, diveq, ARG_2STR);
COMMANDN(+=f, addeqf, ARG_2STR);
COMMANDN(-=f, subeqf, ARG_2STR);
COMMANDN(*=f, muleqf, ARG_2STR);
+COMMANDN(div=f, diveqf, ARG_2STR);
int getvar(const char *name)
{