X-Git-Url: https://git.jsancho.org/?a=blobdiff_plain;f=Source%2FAwards.cpp;h=95fd129c40e034c845d92cc424ca86895ea76b9a;hb=5310d6ffd89fd8b981b273b332a232b70b4ce7ad;hp=47bfc7bfa51d60fde14d7efad5bf580c05078421;hpb=da075483fcd3f0bdb7319a82567217e622f80c23;p=lugaru.git diff --git a/Source/Awards.cpp b/Source/Awards.cpp index 47bfc7b..95fd129 100644 --- a/Source/Awards.cpp +++ b/Source/Awards.cpp @@ -23,6 +23,29 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. #include "Person.h" #include "Game.h" +int bonus; +float bonusvalue; +float bonustotal; +float startbonustotal; +float bonustime; +float bonusnum[100]; + +static const int bonus_values[bonus_count] = { +#define DECLARE_BONUS(id, name, value, ...) value, +#include "Bonuses.def" +#undef DECLARE_BONUS +}; + +void +award_bonus(int playerid, int bonusid, int alt_value) +{ + if (playerid != 0) + return; + bonus = bonusid; + bonustime = 0; + bonusvalue = alt_value ? alt_value : bonus_values[bonusid]; +} + // FIXME: make these per-player float damagetaken; int numfalls; @@ -44,78 +67,81 @@ int maxalarmed; int award_awards(int *awards) { - int numawards = 0, i; - if(damagetaken==0&&player[0].bloodloss==0){ - awards[numawards]=awardflawless; - numawards++; - } - bool alldead = true; - for(i=1;i0){ - awards[numawards]=awardbojutsu; - numawards++; - } - if(numattacks==numswordattack&&numattacks>0){ - awards[numawards]=awardswordsman; - numawards++; - } - if(numattacks==numknifeattack&&numattacks>0){ - awards[numawards]=awardknifefighter; - numawards++; - } - if(numattacks==numunarmedattack&&numthrowkill==0&&weapons.numweapons>0){ - awards[numawards]=awardkungfu; - numawards++; - } - if(numescaped>0){ - awards[numawards]=awardevasion; - numawards++; - } - if(numflipfail==0&&numflipped+numwallflipped*2>20){ - awards[numawards]=awardacrobat; - numawards++; - } - if(numthrowkill==numplayers-1){ - awards[numawards]=awardlongrange; - numawards++; - } - alldead=1; - for(i=1;i0&&alldead){ - awards[numawards]=awardbrutal; - numawards++; - } - if(numreversals>((float)numattacks)*.8&&numreversals>3){ - awards[numawards]=awardaikido; - numawards++; - } - if(maxalarmed==1&&numplayers>2){ - awards[numawards]=awardstrategy; - numawards++; - } - if(numflipfail>3){ - awards[numawards]=awardklutz; - numawards++; - } - return numawards; + int numawards = 0, i; + if (damagetaken == 0 && Person::players[0]->bloodloss == 0) { + awards[numawards] = awardflawless; + numawards++; + } + bool alldead = true; + for (i = 1; i < Person::players.size(); i++) { + if (Person::players[i]->dead != 2) + alldead = 0; + } + if (alldead) { + awards[numawards] = awardalldead; + numawards++; + } + alldead = 1; + for (i = 1; i < Person::players.size(); i++) { + if (Person::players[i]->dead != 1) + alldead = 0; + } + if (alldead) { + awards[numawards] = awardnodead; + numawards++; + } + if (numresponded == 0 && !numthrowkill) { + awards[numawards] = awardstealth; + numawards++; + } + if (numattacks == numstaffattack && numattacks > 0) { + awards[numawards] = awardbojutsu; + numawards++; + } + if (numattacks == numswordattack && numattacks > 0) { + awards[numawards] = awardswordsman; + numawards++; + } + if (numattacks == numknifeattack && numattacks > 0) { + awards[numawards] = awardknifefighter; + numawards++; + } + if (numattacks == numunarmedattack && numthrowkill == 0 && weapons.size() > 0) { + awards[numawards] = awardkungfu; + numawards++; + } + if (numescaped > 0) { + awards[numawards] = awardevasion; + numawards++; + } + if (numflipfail == 0 && numflipped + numwallflipped * 2 > 20) { + awards[numawards] = awardacrobat; + numawards++; + } + if (numthrowkill == Person::players.size() - 1) { + awards[numawards] = awardlongrange; + numawards++; + } + alldead = 1; + for (i = 1; i < Person::players.size(); i++) { + if (Person::players[i]->dead != 2) + alldead = 0; + } + if (numafterkill > 0 && alldead) { + awards[numawards] = awardbrutal; + numawards++; + } + if (numreversals > ((float)numattacks)*.8 && numreversals > 3) { + awards[numawards] = awardaikido; + numawards++; + } + if (maxalarmed == 1 && Person::players.size() > 2) { + awards[numawards] = awardstrategy; + numawards++; + } + if (numflipfail > 3) { + awards[numawards] = awardklutz; + numawards++; + } + return numawards; }