diff --git a/apps/dsm/mods/mod_utils/ModUtils.cpp b/apps/dsm/mods/mod_utils/ModUtils.cpp index 6c588f76..4c773490 100644 --- a/apps/dsm/mods/mod_utils/ModUtils.cpp +++ b/apps/dsm/mods/mod_utils/ModUtils.cpp @@ -44,7 +44,8 @@ MOD_ACTIONEXPORT_BEGIN(MOD_CLS_NAME) { DEF_CMD("utils.spell", SCUSpellAction); DEF_CMD("utils.rand", SCURandomAction); DEF_CMD("utils.srand", SCUSRandomAction); - + DEF_CMD("utils.add", SCUSAddAction); + DEF_CMD("utils.sub", SCUSSubAction); } MOD_ACTIONEXPORT_END; @@ -160,3 +161,40 @@ EXEC_ACTION_START(SCUSpellAction) { sc_sess->playFile(basedir+play_string[i]+".wav", false); } EXEC_ACTION_END; + + +CONST_ACTION_2P(SCUSAddAction, ',', false); +EXEC_ACTION_START(SCUSAddAction) { + string n1 = resolveVars(par1, sess, sc_sess, event_params); + string n2 = resolveVars(par2, sess, sc_sess, event_params); + + string varname = par1; + if (varname.length() && varname[0] == '$') + varname = varname.substr(1); + + // todo: err checking + string res = double2str(atof(n1.c_str()) + atof(n2.c_str())); + + DBG("setting var[%s] = %s + %s = %s\n", + varname.c_str(), n1.c_str(), n2.c_str(), res.c_str()); + sc_sess->var[varname] = res; + +} EXEC_ACTION_END; + +CONST_ACTION_2P(SCUSSubAction, ',', false); +EXEC_ACTION_START(SCUSSubAction) { + string n1 = resolveVars(par1, sess, sc_sess, event_params); + string n2 = resolveVars(par2, sess, sc_sess, event_params); + + string varname = par1; + if (varname.length() && varname[0] == '$') + varname = varname.substr(1); + + // todo: err checking + string res = double2str(atof(n1.c_str()) - atof(n2.c_str())); + + DBG("setting var[%s] = %s - %s = %s\n", + varname.c_str(), n1.c_str(), n2.c_str(), res.c_str()); + sc_sess->var[varname] = res; + +} EXEC_ACTION_END; diff --git a/apps/dsm/mods/mod_utils/ModUtils.h b/apps/dsm/mods/mod_utils/ModUtils.h index 0e97ce21..f43ca0e6 100644 --- a/apps/dsm/mods/mod_utils/ModUtils.h +++ b/apps/dsm/mods/mod_utils/ModUtils.h @@ -38,5 +38,7 @@ DEF_ACTION_1P(SCGetNewIdAction); DEF_ACTION_2P(SCUSpellAction); DEF_ACTION_2P(SCURandomAction); DEF_ACTION_1P(SCUSRandomAction); +DEF_ACTION_2P(SCUSAddAction); +DEF_ACTION_2P(SCUSSubAction); #endif diff --git a/apps/dsm/mods/mod_utils/Readme.mod_utils.txt b/apps/dsm/mods/mod_utils/Readme.mod_utils.txt index 58e2b6f5..94b0282f 100644 --- a/apps/dsm/mods/mod_utils/Readme.mod_utils.txt +++ b/apps/dsm/mods/mod_utils/Readme.mod_utils.txt @@ -23,3 +23,11 @@ Actions: utils.srand() seed the RNG with time(). + utils.add($var, val) + add val (float value) to var. also + utils.add($var1, $val); utils.add($var, #param) + + utils.sub($var, val) + subtract val from var + +