summaryrefslogtreecommitdiffstats
path: root/crawl-ref/source/stuff.cc
diff options
context:
space:
mode:
authordshaligram <dshaligram@c06c8d41-db1a-0410-9941-cceddc491573>2007-07-02 19:25:57 +0000
committerdshaligram <dshaligram@c06c8d41-db1a-0410-9941-cceddc491573>2007-07-02 19:25:57 +0000
commita065b3c3384ff85750be7126ffbb3f2df5f2d375 (patch)
treed31917f236555906158fdeb77ae5c1665030dc8f /crawl-ref/source/stuff.cc
parent79b728ec3b58721a1cad10f26f3f1d8fb259a254 (diff)
downloadcrawl-ref-a065b3c3384ff85750be7126ffbb3f2df5f2d375.tar.gz
crawl-ref-a065b3c3384ff85750be7126ffbb3f2df5f2d375.zip
Experimental monster weapon swapping implementation. Allow monsters to use
throwing weapons (hand axes, spears, clubs, daggers). Give orcs and orc warriors a chance of being generated with throwing weapons (axes or spears). Throwing weapons are stacked in monster inventory, but unstack when dropped. We may want to consider fully stackable throwing weapons at some point. git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@1717 c06c8d41-db1a-0410-9941-cceddc491573
Diffstat (limited to 'crawl-ref/source/stuff.cc')
-rw-r--r--crawl-ref/source/stuff.cc23
1 files changed, 23 insertions, 0 deletions
diff --git a/crawl-ref/source/stuff.cc b/crawl-ref/source/stuff.cc
index 615a21a18b..2f9d0c2bcf 100644
--- a/crawl-ref/source/stuff.cc
+++ b/crawl-ref/source/stuff.cc
@@ -21,6 +21,7 @@
#include "stuff.h"
#include "view.h"
+#include <cstdarg>
#include <sstream>
#include <iomanip>
@@ -192,6 +193,28 @@ int random_range(int low, int high)
return (low + random2(high - low + 1));
}
+int random_choose(int first, ...)
+{
+ va_list args;
+ va_start(args, first);
+
+ int chosen = first, count = 1, nargs = 100;
+
+ while (nargs-- > 0)
+ {
+ const int pick = va_arg(args, int);
+ if (pick == -1)
+ break;
+ if (one_chance_in(++count))
+ chosen = pick;
+ }
+
+ ASSERT(nargs > 0);
+
+ va_end(args);
+ return (chosen);
+}
+
int random2( int max )
{
if (max <= 1)