diff options
-rw-r--r-- | data.c | 5 | ||||
-rw-r--r-- | special_actions.c | 14 |
2 files changed, 16 insertions, 3 deletions
@@ -86,7 +86,7 @@ void data_distributewonders() for(i = 0; i < numplayers; i++) { player[i][3][0] = wonders[i]; player[i][3][1] = rand()%2; - player[0][3][0] = 6; //delete these lines later + player[0][3][0] = 8; //delete these lines later player[0][3][1] = 1; //this one too! } } @@ -152,6 +152,9 @@ void data_endturn() data_flushbuffers(); } else data_discard((i+numplayers-turn)%numplayers, hands[i][0]); } + for(i = 0; i < numplayers; i++) { + special_action(i, data_getwonder(i), data_getwonderside(i)*3+data_getwonderstages(i)); + } data_nextera(); return; } diff --git a/special_actions.c b/special_actions.c index 6680434..925fe42 100644 --- a/special_actions.c +++ b/special_actions.c @@ -28,6 +28,10 @@ void Halicarnassus(int player) int bottom = 0; while(discards[numcards++] != -1 && numcards < 50); numcards /= 2; + if(numcards == 0) { + postmessage("No cards in the discard pile. Sucks to suck."); + return; + } while(1) { view_refresh(focus, cursor, player, 1); switch(io_getkey()) { @@ -70,16 +74,22 @@ void Halicarnassus(int player) } } +static int hal = 0; +static int oly = 0; + void special_action(int player, int wonder, int stage) { if(wonder == 8) { //Halicarnassus - if(stage == 2 || stage == 4 || stage == 5 || stage == 6) + if(stage == 2 && hal == 0 || stage == 4 && hal == 0 || stage == 5 && hal == 1 || stage == 6 && hal == 2) { if(data_isai(player)); else Halicarnassus(player); + hal++; + } } if(wonder == 7) { //Olympia - if(stage == 2) { + if(stage == 2 && ! oly) { data_setfreebuild(player); + oly = 1; } } } |