From ef1832697467264c2e9e258a6d7e80469cd57e6c Mon Sep 17 00:00:00 2001 From: DNB <> Date: Sun, 5 Sep 2004 03:15:43 +0000 Subject: [PATCH] fixed players being asked to play a war hand when they are not in the war fixed error in calculating correct winner of a war --- ChangeLog | 2 + warserv.c | 110 ++++++++++++++++++++++++++++-------------------------- 2 files changed, 59 insertions(+), 53 deletions(-) diff --git a/ChangeLog b/ChangeLog index 821bcc1..5c98319 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,6 +1,8 @@ WarServ ChangeLog ============================================================================= 1.2 - DeadNotBuried +- fixed players being asked to play a war hand when they are not in the war +- fixed error in calculating correct winner of a war - added Installation Instructions to Readme file - fixed version number displayed in !rules - added explanation of games to !rules diff --git a/warserv.c b/warserv.c index f1cc49c..c7ef4c6 100644 --- a/warserv.c +++ b/warserv.c @@ -46,10 +46,9 @@ char csuit[10]; char csuitcolour[10]; char csuitcard[10]; -/** Module Info definition - * version information about our module - * This structure is required for your module to load and run on NeoStats - */ +/* + * Module Info definition +*/ ModuleInfo __module_info = { "WarServ", "War Card Game Module For NeoStats", @@ -58,10 +57,9 @@ ModuleInfo __module_info = { __TIME__ }; -/** printf version information - * respond to the /VERSION command on IRC with this text - * This is recommended for your module to load and run on NeoStats - */ +/* + * respond to the /VERSION command +*/ int new_m_version(char *origin, char **av, int ac) { snumeric_cmd(351, origin, "Module WarServ Loaded, Version: %s %s %s", @@ -70,12 +68,9 @@ int new_m_version(char *origin, char **av, int ac) return 0; } -/** Module function list - * A list of IRCd (server) commands that we will respond to - * e.g. VERSION - * This table is required for your module to load and run on NeoStats - * but you do not have to have any functions in it - */ +/* + * Module function list +*/ Functions __module_functions[] = { {MSG_VERSION, new_m_version, 1}, #ifdef HAVE_TOKEN_SUP @@ -84,10 +79,9 @@ Functions __module_functions[] = { {NULL, NULL, 0} }; -/** Channel message processing - * What do we do with messages in channels - * This is required if you want your module to respond to channel messages - */ +/* + * Channel message processing +*/ int __ChanMessage(char *origin, char **argv, int argc) { char *tsptr; @@ -203,10 +197,9 @@ int __ChanMessage(char *origin, char **argv, int argc) return 1; } -/** Bot message processing - * What do we do with messages sent to our bot with /mag - * This is required if you want your module to respond to /msg - */ +/* + * private message processing +*/ int __BotMessage(char *origin, char **argv, int argc) { User *u; @@ -249,9 +242,9 @@ int __BotMessage(char *origin, char **argv, int argc) return 1; } -/** Online event processing - * What we do when we first come online - */ +/* + * Online event processing +*/ int Online(char **av, int ac) { char *tmp; @@ -276,7 +269,7 @@ int Online(char **av, int ac) /* * Nick Change Check - */ +*/ int PlayerNickChange(char **av, int ac) { if (currentwarplayercount < 1) { return 1; @@ -288,21 +281,18 @@ int PlayerNickChange(char **av, int ac) { } } -/** Module event list - * What events we will act on - * This is required if you want your module to respond to events on IRC - * see modules.txt for a list of all events available - */ +/* + * Module event list +*/ EventFnList __module_events[] = { {EVENT_ONLINE, Online}, {EVENT_NICKCHANGE, PlayerNickChange}, {NULL, NULL} }; -/** Init module - * This is required if you need to do initialisation of your module when - * first loaded - */ +/* + * Init module +*/ int __ModInit(int modnum, int apiver) { strncpy(s_module_bot_name, "WarServ", MAXNICK); @@ -310,9 +300,9 @@ int __ModInit(int modnum, int apiver) return 1; } -/** Exit module - * This is required if you need to do cleanup of your module when it ends - */ +/* + * Exit module +*/ void __ModFini() { del_mod_timer("wartimer"); @@ -474,7 +464,7 @@ int removewarother(char *nic, char *ntr) { } /* - * Remove PLayer + * Remove Player * removes player from game and adds any cards they have to the stack */ @@ -490,6 +480,7 @@ int removewar(char *nic) { } for (wpln = 0; wpln < currentwarplayercount; wpln++) { if (!strcasecmp(wplayernick[wpln], nic)) { + privmsg(warroom, s_module_bot_name, "\0037%s \0038Removed from the current game of \0034War", nic); if (wpln == currentplayer) { tfrpacp= 1; } else if (wpln < currentplayer) { @@ -517,7 +508,6 @@ int removewar(char *nic) { } } currentwarplayercount--; - privmsg(warroom, s_module_bot_name, "\0037%s \0038Removed from the current game of \0034War", nic); } } if (currentwarplayercount < 2) { @@ -565,6 +555,7 @@ int askplaycard() { wpln= currentwarplayercount; } } + currentplayer = nwp; } if (nwp > currentwarplayercount) { checkwarwinner(); @@ -608,6 +599,7 @@ int askplaycard() { */ int playwarcards(char *cnps1, char *cnps2, char *cnps3) { + int ncob; int cnp[3]; char *tempint; cnp[0] = atoi(cnps1); @@ -654,6 +646,14 @@ int playwarcards(char *cnps1, char *cnps2, char *cnps3) { wstackcards[wstackcardscurrent]= wplayercardsinhand[currentplayer][cnp[wpln]]; wstackcardscurrent++; wplayerwarcardsplayed[currentplayer][wpln]= wplayercardsinhand[currentplayer][cnp[wpln]]; + } + if (cnp[2] > cnp[0]) + cnp[2]--; + if (cnp[2] > cnp[1]) + cnp[2]--; + if (cnp[1] > cnp[0]) + cnp[1]--; + for (wpln = 0; wpln < 3; wpln++) { wplayercardstotal[currentplayer]--; for (wplnh = cnp[wpln]; wplnh < wplayercardstotal[currentplayer]; wplnh++) { wplayercardsinhand[currentplayer][wplnh]= wplayercardsinhand[currentplayer][(wplnh +1)]; @@ -767,17 +767,19 @@ int checkhandwinner() { } else { privmsg(warroom, s_module_bot_name, "\0034WAR DECLARED"); for (wpln = 0; wpln < currentwarplayercount; wpln++) { - if ((wplayercardplayed[wpln] % 13) == hcnp) { - if (wplayercardstotal[wpln] < 3) { - privmsg(warroom, s_module_bot_name, "\0037%s\0038 Surrenders\0039 (Insufficient Cards)", wplayernick[wpln]); - hcnpt--; - removewar(wplayernick[wpln]); - if (currentwarplayercount < 2) { - wpln= currentwarplayercount; - return 1; - } - } else { + if (warinprogress == wplayeratwar[wpln]) { + wplayeratwar[wpln] = 0; + if ((wplayercardplayed[wpln] % 13) == hcnp) { wplayeratwar[wpln]= 1; + if (wplayercardstotal[wpln] < 3) { + privmsg(warroom, s_module_bot_name, "\0037%s\0038 Surrenders\0039 (Insufficient Cards)", wplayernick[wpln]); + hcnpt--; + removewar(wplayernick[wpln]); + if (currentwarplayercount < 2) { + wpln= currentwarplayercount; + return 1; + } + } } } } @@ -796,9 +798,11 @@ int checkwarwinner() { for (wpln = 0; wpln < currentwarplayercount; wpln++) { if (wplayeratwar[wpln] == 1) { wplayercardplayed[wpln]= wplayerwarcardsplayed[wpln][2]; - for (wplnh = 0; wplnh < 3; wplnh++) { - wplayerwarcardsplayed[wpln][wplnh]= 0; - } + } else { + wplayercardplayed[wpln]= 0; + } + for (wplnh = 0; wplnh < 3; wplnh++) { + wplayerwarcardsplayed[wpln][wplnh]= 0; } } checkhandwinner();