git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@1401 c06c8d41-db1a-0410-9941-cceddc491573
QKGDOYIYKE6B36ION5O2DRW65DWWPZMYNWJVH7LJJ7FPGGM2MYAQC
GMYJ4XEEKZASQWMXQZUME5VYCDBRODO7UJJUEZSVZBMSFVBFLK2AC
NJDPIHOREOTAZJXOMZA5QA4TBADDWLFZ25NVAIFDQ7BUBVUWCEEAC
HFEFKHVV2ULXS6ZEFNX6ZXXUJKME5L2PITQ3VRTKMRUOU3DHXXWQC
IHIJSWVOONSTA2WCHKW3YKBLETUQECFVBVLMET5SGQZ4C6U3GCUQC
K2CS6TCX2NDVL2ASEHGP4J4K4IJ6FP3ANNKTSIWVG43HPYSBX6ZQC
RPOZZWKG5GLPHVZZ7ZKMKS64ZMV2LDCQSARBJFJ6FZOTOKCQO7FAC
SDLKLUNFGVKDS55DDJZCBAVIB7NL3RRYPTACAY65SCUQKV6APFSAC
UDYVF65OZSNPANLHDI3ODBEGUAKAVZ4KH4OZFAKR2CQJPO4AXU6QC
LXLUKS5CKXBUSVV3QTZ4SM7NWSY6JFQEBHUBQW2VUEU5DOL3RRLAC
B62ICMDTN5V7R7RBL4JALFVKEMVOOVLRSJASRNYS6CGFWBEEF5JQC
DDU4A3JGN5IUIPP5IASOODKPR2WBHSDSV4FITZ6HNXNSXXQACWAQC
YCL3W2PFE6ILTGBFODCSXNPDIA46KVSZP2TI7HDMYAOEJT65RIEAC
JW2KRJHES33W7UTWZ6NDO4TLMK4EFU4HKZXBWR2UJOMPCCOTR4CQC
77H4BWWPPGLM3PLZH4QTAJRXIZTSDVNCOKZE223I437FN2UJ34RQC
JNB3PBPBJHDUHH47ZICB25QENPTMLYK7CXC5BXRVWZ3J3ZZPKCUAC
5UVDIVD4NSXA52U4QMQIVST3GSZJ2A2YZK3RUEXKPM43YVQ7LI5AC
74LQ7JXVLAFSHLI7LCBKFX47CNTYSKGUQSXNX5FCIUIGCC2JTR3QC
DODCHP2S4I6VZKQAVXX6D76OPNFI2YWZ4XH3HZTMAJZXA2RJ3XRQC
DTO3EUKWHZ5RJNGNCFYXSOVTIPVXPP637F2W7WFGYKJ7JK7VNKNQC
VJMZ3UWE4TY2RPKX32HI2K6OAZJKULKWJISAOTU2W5UHKUJ463NQC
5OVWAD2MGK2NT6Q546KW7HZHELVDBBRC2CQX6VZMZF2YVRC7CPVAC
VD4KDTGHVKCN35AWREYB4TEOUMCTW7SAUPAMTMF5ABC7VBHVKP4AC
KKROXTUPBNEXXEUUDJNADATK3BCQPSQWFZ6L4VTKBPTYXJLYUHDQC
A3CO4KBFTFU3ZSHWRY2OPPX3MMTFV7OUCZGL7Q4Y2FU7JO4AP7MAC
34C4U6EQWERY75GZJKUCM5KVGU2OUICETS5LGZF6RMKMZT4R5SQAC
2KTJHQUX2LTU2BCLS5YXVRRKMOYKKIZAPF2LBKORFGSHEN5IO3IAC
FUEEIUKGHHFPIRZCN3N753GONWAZTWQ2ZWR53IBJAAZ6FZUNGOMAC
ZP2KE7A2LE7Z2S7AC45WE4CXDSEVDTWIMV2EM4IBUKXYJIDU6R7QC
static bool cloud_helper( int (*func) (int, int, int, int, kill_category),
int x, int y,
int pow, int ctype, kill_category );
static bool cloud_helper(int (*func)(int, int, int, cloud_type, kill_category),
int x, int y,
int pow, cloud_type ctype, kill_category );
static bool cloud_helper( int (*func) (int, int, int, int, kill_category),
int x, int y,
int pow, int ctype, kill_category whose )
static bool cloud_helper(int (*func)(int, int, int, cloud_type, kill_category),
int x, int y,
int pow, cloud_type ctype, kill_category whose )
&& is_range_weapon_type((weapon_type) lnchType)
&& wepType == fires_ammo_type((weapon_type) lnchType))
&& is_range_weapon_type(static_cast<weapon_type>(lnchType))
&& wepType == fires_ammo_type(static_cast<weapon_type>(lnchType)))
static void cards(unsigned char which_card);
// array sizes -- see notes below {dlb}
#define ARRAYSIZE(x) (sizeof(x) / sizeof(x[0]))
#define DECK_WONDERS_SIZE ARRAYSIZE(deck_of_wonders)
#define DECK_SUMMONING_SIZE ARRAYSIZE(deck_of_summoning)
#define DECK_TRICKS_SIZE ARRAYSIZE(deck_of_tricks)
#define DECK_POWER_SIZE ARRAYSIZE(deck_of_power)
#define DECK_PUNISHMENT_SIZE ARRAYSIZE(deck_of_punishment)
// I really am not fond of how all of this works, the
// decks ought to be stored (possibly) in an array of
// pointers to int or as discrete arrays of int using
// the sizeof operator to determine upper bounds, and
// not defines, which is a bit clumsy given that you
// have to update two things presently (the array and
// the corresponding define) in order to add things to
// decks ... someone fix this, or I will {dlb}
unsigned char *card = deck_of_wonders;
unsigned char max_card = 0;
int i = 0;
card_type *deck = deck_of_wonders;
int max_card = 0;
if (i == CARD_BLANK && you.skills[SK_EVOCATIONS] > random2(30))
i = (int) card[random2(max_card)];
// High Evocations gives you another shot (but not at being punished...)
if (which_deck != DECK_OF_PUNISHMENT && chosen == CARD_BLANK &&
you.skills[SK_EVOCATIONS] > random2(30))
chosen = deck[random2(max_card)];
case 0: cloud_type = CLOUD_FIRE; break;
case 1: cloud_type = CLOUD_STINK; break;
case 2: cloud_type = CLOUD_COLD; break;
case 3: cloud_type = CLOUD_POISON; break;
case 4: cloud_type = CLOUD_BLACK_SMOKE; break;
case 5: cloud_type = CLOUD_BLUE_SMOKE; break;
case 6: cloud_type = CLOUD_PURP_SMOKE; break;
default: cloud_type = CLOUD_STEAM; break;
case 0: cl_type = CLOUD_FIRE; break;
case 1: cl_type = CLOUD_STINK; break;
case 2: cl_type = CLOUD_COLD; break;
case 3: cl_type = CLOUD_POISON; break;
case 4: cl_type = CLOUD_BLACK_SMOKE; break;
case 5: cl_type = CLOUD_BLUE_SMOKE; break;
case 6: cl_type = CLOUD_PURP_SMOKE; break;
default: cl_type = CLOUD_STEAM; break;