/* does end of month actions */
void passmonth(char &clearformess,char canseethings)
{
   short oldlaw[LAWNUM];
   memmove(oldlaw,law,sizeof(short)*LAWNUM);
   int l, v, p;

   //TIME ADVANCE
   day=1;
   month++;
   if(month==13)
   {
      month=1;
      year++;
   }

   switch(endgamestate)
   {
   case ENDGAME_NONE:
      if(publicmood(-1)>60)
      {
         endgamestate=ENDGAME_CCS_APPEARANCE;
         attitude[VIEW_CONSERVATIVECRIMESQUAD]=0;
      }
      break;
   case ENDGAME_CCS_APPEARANCE:
      if(publicmood(-1)>80)
         endgamestate=ENDGAME_CCS_ATTACKS;
      break;
   case ENDGAME_CCS_ATTACKS:
      if(publicmood(-1)>90)
         endgamestate=ENDGAME_CCS_SIEGES;
      break;
   case ENDGAME_CCS_SIEGES:
   case ENDGAME_CCS_DEFEATED:
      //if(publicmood(-1)>85&&presparty!=LIBERAL_PARTY)
      //   endgamestate=ENDGAME_MARTIALLAW;
      break;
   }

   //CLEAR RENT EXEMPTIONS
   for(l=0;l<len(location);l++) location[l]->newrental=0;

   //YOUR PAPER AND PUBLIC OPINION AND STUFF
   vector<int> nploc;
   for(l=0;l<len(location);l++)
   {
      if((location[l]->compound_walls & COMPOUND_PRINTINGPRESS)&&
         !location[l]->siege.siege&&
          location[l]->renting!=RENTING_CCS) nploc.push_back(l);
   }

   // Check for game over
   endcheck(END_DEAD);
   dispersalcheck(clearformess);

   int guardianpower=0;
   if(len(nploc)&&!disbanding)
   {
      //DO SPECIAL EDITIONS
      int loottypeindex=choosespecialedition(clearformess);

      if(loottypeindex!=-1)
      {
         guardianpower+=10*len(nploc);
         printnews(loottypeindex,len(nploc));

         if(loottype[loottypeindex]->get_idname()=="LOOT_INTHQDISK"|| //For special edition xml file? -XML
            loottype[loottypeindex]->get_idname()=="LOOT_SECRETDOCUMENTS")
         {
            for(int l=0;l<len(nploc);l++)
               criminalizepool(LAWFLAG_TREASON,-1,nploc[l]);
         }
      }
   }

   int libpower[VIEWNUM]={0};

   //STORIES STALE EVEN IF NOT PRINTED
   for(v=0;v<VIEWNUM;v++)public_interest[v]/=2;

   int conspower=200-attitude[VIEW_AMRADIO]-attitude[VIEW_CABLENEWS];

   //HAVING SLEEPERS
   for(int pl=len(pool)-1;pl>0;pl--)
      if(pool[pl]->alive&&(pool[pl]->flag & CREATUREFLAG_SLEEPER))
         sleepereffect(*pool[pl],clearformess,canseethings,libpower);

   //Manage graffiti
   for(int l=0;l<len(location);l++) // Check each location
   {
      for(int c=len(location[l]->changes)-1;c>=0;c--) // Each change to the map
      {
         if(location[l]->changes[c].flag==SITEBLOCK_GRAFFITI||
            location[l]->changes[c].flag==SITEBLOCK_GRAFFITI_CCS||
            location[l]->changes[c].flag==SITEBLOCK_GRAFFITI_OTHER) // Find changes that refer specifically to graffiti
         {
            int power=0,align=0;

            if(location[l]->changes[c].flag==SITEBLOCK_GRAFFITI) align=1;
            if(location[l]->changes[c].flag==SITEBLOCK_GRAFFITI_CCS) align=-1;

            //Purge graffiti from more secure sites (or from non-secure
            //sites about once every five years), but these will
            //influence people more for the current month
            if(securityable(location[l]->type))
            {
               location[l]->changes.erase(location[l]->changes.begin()+c);
               power=5;
            }
            else
            {
               if(location[l]->renting==RENTING_CCS)
                  location[l]->changes[c].flag=SITEBLOCK_GRAFFITI_CCS; // Convert to CCS tags
               else if(location[l]->renting==RENTING_PERMANENT)
                  location[l]->changes[c].flag=SITEBLOCK_GRAFFITI; // Convert to LCS tags
               else
               {
                  power=1;
                  if(!LCSrandom(10))
                     location[l]->changes[c].flag=SITEBLOCK_GRAFFITI_OTHER; // Convert to other tags
                  if(!LCSrandom(10)&&endgamestate<ENDGAME_CCS_DEFEATED&&endgamestate>0)
                     location[l]->changes[c].flag=SITEBLOCK_GRAFFITI_CCS; // Convert to CCS tags
                  if(!LCSrandom(30))
                     location[l]->changes.erase(location[l]->changes.begin()+c); // Clean up
               }
            }
            if(align==1)
            {
               background_liberal_influence[VIEW_LIBERALCRIMESQUAD]+=power;
               background_liberal_influence[VIEW_CONSERVATIVECRIMESQUAD]+=power;
            }
            else if(align==-1)
            {
               background_liberal_influence[VIEW_LIBERALCRIMESQUAD]-=power;
               background_liberal_influence[VIEW_CONSERVATIVECRIMESQUAD]-=power;
            }
         }
      }
   }

   int mediabalance=0;
   int issuebalance[VIEWNUM-5];
   //int stimulus=0;
   //double cost=0;
   //double tax=0;

   //PUBLIC OPINION NATURAL MOVES
   for(v=0;v<VIEWNUM;v++)
   {
      // Liberal essays add their power to the effect of sleepers
      libpower[v]+=background_liberal_influence[v];
      background_liberal_influence[v]=static_cast<short>(background_liberal_influence[v]*0.66);

      if(v==VIEW_LIBERALCRIMESQUADPOS) continue;
      if(v==VIEW_LIBERALCRIMESQUAD) continue;
      //if(v==VIEW_POLITICALVIOLENCE)
      //{
      //   change_public_opinion(VIEW_POLITICALVIOLENCE,-1,0);
      //   continue;
      //}
      if(v==VIEW_CONSERVATIVECRIMESQUAD) continue;
      if(v!=VIEW_AMRADIO&&v!=VIEW_CABLENEWS)
      {
         issuebalance[v] = libpower[v] - conspower;
         mediabalance += issuebalance[v];

         // Heavy randomization -- balance of power just biases the roll
         int roll = issuebalance[v] + LCSrandom(400)-200;

         // If +/-50 to either side, that side wins the tug-of-war
         if(roll < -50)
            change_public_opinion(v,-1,0);
         else if(roll > 50)
            change_public_opinion(v,1,0);
         else // Else random movement
            change_public_opinion(v,LCSrandom(2)*2-1,0);
      }

      // AM Radio and Cable News popularity slowly shift to reflect public
      // opinion over time -- if left unchecked, their subtle influence
      // on society will become a self-perpetuating Conservative nightmare!
      else if(v==VIEW_AMRADIO||v==VIEW_CABLENEWS)
      {
         if(publicmood(-1)<attitude[v])change_public_opinion(v,-1);
         else change_public_opinion(v,1);
      }
   }

   // Temporary Stalinizing Code (TODO: Implement the Stalinist Comrade Squad for changing public opinion, then remove this)
   if(stalinmode) for(int v=0;v<VIEWNUM-3;v++)
   {
      if(stalinview(v,false)) { if((attitude[v]+=3)>100) attitude[v]=100; }
      else { if(--attitude[v]<0) attitude[v]=0; }
   }
   // End Temporary Stalinizing Code (TODO: Implement the Stalinist Comrade Squad for changing public opinion, then remove this)

   // Seduction monthly experience stipends for those liberals
   // who have been getting it on with their love slaves/masters
   // in the background
   for(int s=0;s<len(pool);s++)
   {
      pool[s]->train(SKILL_SEDUCTION,loveslaves(*pool[s])*5);
      if(pool[s]->flag & CREATUREFLAG_LOVESLAVE)
         pool[s]->train(SKILL_SEDUCTION,5);
   }

   /*******************************************************
   *                 INTELLIGENCE REPORT                  *
   *     ONLY IF SHOWMECHANICS OR SHOWWAIT IS DEFINED     *
   *        EYES ONLY - LCS PROPERTY - TOP SECRET         *
   *******************************************************/
   #if defined(SHOWMECHANICS) || defined(SHOWWAIT)
   if(canseethings)
   {
      music.play(MUSIC_ELECTIONS);
      erase();
      set_color(COLOR_WHITE,COLOR_BLACK,1);
      mvaddstr(0,23,"LCS MONTHLY INTELLIGENCE REPORT");
      mvaddstr(2,27,"CURRENT POLITICAL TRENDS");
      int numviews=(endgamestate>=ENDGAME_CCS_DEFEATED||newscherrybusted<2)?VIEWNUM-1:VIEWNUM;
      for(int v=-1-stalinmode,y=4,x=0,pip;v<numviews;v++)
      {
         if((y-4)*2>=numviews+1+stalinmode) y=4,x=40;
         for(pip=2;pip>=-2;pip--)
         {
            set_alignment_color(pip,true);
            if(pip==2) mvaddchar(y,x+22,'\x11');
            addstr("ÄÄÄ");
            if(pip==-2) addchar('\x10');
         }
         if(v>=0) pip=14-(attitude[v]*14)/100;
         else pip=14-(publicmood(v)*14)/100;
         set_alignment_color((14-pip)/3-2,true);
         mvaddstr(y,x,getview(v,false));
         mvaddchar(y++,x+23+pip,'O');
      }
      set_color(COLOR_GREEN,COLOR_BLACK,1);
      mvaddstr(23,0,"Elite Liberal ");
      set_color(COLOR_WHITE,COLOR_BLACK,0);
      addstr("-  ");
      set_color(COLOR_CYAN,COLOR_BLACK,1);
      addstr("Liberal  ");
      set_color(COLOR_WHITE,COLOR_BLACK,0);
      addstr("-  ");
      set_color(COLOR_YELLOW,COLOR_BLACK,1);
      addstr("moderate  ");
      set_color(COLOR_WHITE,COLOR_BLACK,0);
      addstr("-  ");
      set_color(COLOR_MAGENTA,COLOR_BLACK,1);
      addstr("Conservative  ");
      set_color(COLOR_WHITE,COLOR_BLACK,0);
      addstr("-  ");
      set_color(COLOR_RED,COLOR_BLACK,1);
      addstr("Arch-Conservative");
      set_color(COLOR_WHITE,COLOR_BLACK,0);
      mvaddstr(24,0,"Press any key to reflect on these poll numbers.");
      clearformess=1;

      getkey();
   }
   #endif
   /*******************************************************
   *                                                      *
   *               END INTELLIGENCE REPORT                *
   *                                                      *
   *******************************************************/

   //ELECTIONS
   if(month==11){elections(clearformess,canseethings);clearformess=1;}

   //SUPREME COURT
   if(month==6){supremecourt(clearformess,canseethings);clearformess=1;}

   //CONGRESS
   congress(clearformess,canseethings);clearformess=1;

   //DID YOU WIN?
   if(wincheck())
   {
      liberalagenda(1);
      savehighscore(END_WON);
      reset(savefile_name);
      viewhighscores();
      end_game();
   }

   //CONTROL LONG DISBANDS
   if(disbanding&&year-disbandtime>=50)
   {
      music.play(MUSIC_DEFEAT);
      set_color(COLOR_WHITE,COLOR_BLACK,1);

      erase();
      move(12,10);
      addstr("The Liberal Crime Squad is now just a memory.", gamelog);
      gamelog.newline();

      getkey();

      set_color(COLOR_WHITE,COLOR_BLACK,0);
      erase();
      move(12,12);
      addstr("The last LCS members have all been hunted down.", gamelog);
      gamelog.newline();

      getkey();

      set_color(COLOR_BLACK,COLOR_BLACK,1);
      erase();
      move(12,14);
      addstr("They will never see the utopia they dreamed of...", gamelog);
      gamelog.newline();
      gamelog.nextMessage();

      getkey();

      savehighscore(END_DISBANDLOSS);
      reset(savefile_name);
      viewhighscores();
      end_game();
   }

   //UPDATE THE WORLD IN CASE THE LAWS HAVE CHANGED
   updateworld_laws(law,oldlaw);

   //THE SYSTEM!
   for(p=len(pool)-1;p>=0;p--)
   {
      if(disbanding) break;

      if(!pool[p]->alive) continue;
      if(pool[p]->flag & CREATUREFLAG_SLEEPER) continue;
      if(pool[p]->location==-1) continue;

      if(location[pool[p]->location]->type==SITE_GOVERNMENT_POLICESTATION)
      {
         if(clearformess) erase();
         else makedelimiter();

         if(pool[p]->flag & CREATUREFLAG_MISSING)
         {
            set_color(COLOR_MAGENTA,COLOR_BLACK,1);
            move(8,1);
            addstr("Cops re-polluted ", gamelog);
            addstr(pool[p]->name, gamelog);
            addstr("'s mind with Conservatism!", gamelog);
            gamelog.nextMessage();

            getkey();

            removesquadinfo(*pool[p]);
            delete_and_remove(pool,p);
            continue;
         }
         else if(pool[p]->flag & CREATUREFLAG_ILLEGALALIEN && law[LAW_IMMIGRATION]!=2)
         {
            set_color(COLOR_MAGENTA,COLOR_BLACK,1);
            move(8,1);
            addstr(pool[p]->name, gamelog);
            addstr(" has been shipped out to the INS to face ", gamelog);
            if(law[LAW_IMMIGRATION]==-2 && law[LAW_DEATHPENALTY]==-2)
               addstr("execution.", gamelog);
            else addstr("deportation.", gamelog);
            gamelog.newline();

            getkey();

            removesquadinfo(*pool[p]);
            delete_and_remove(pool,p);
            continue;
         }
         else
         {
            //TRY TO GET RACKETEERING CHARGE
            int copstrength=100;
            if(law[LAW_POLICEBEHAVIOR]==-2) copstrength=200;
            if(law[LAW_POLICEBEHAVIOR]==-1) copstrength=150;
            if(law[LAW_POLICEBEHAVIOR]==1) copstrength=75;
            if(law[LAW_POLICEBEHAVIOR]==2) copstrength=50;

            copstrength=(copstrength*pool[p]->heat)/4;
            if(copstrength>200)copstrength=200;

            //Confession check
            if(LCSrandom(copstrength)>pool[p]->juice  +  pool[p]->get_attribute(ATTRIBUTE_HEART,true)*5  -
                                      pool[p]->get_attribute(ATTRIBUTE_WISDOM,true)*5  +  pool[p]->get_skill(SKILL_PSYCHOLOGY)*5
                                      /*+ pool[p]->get_skill(SKILL_SURVIVAL)*5*/  &&  pool[p]->hireid!=-1)
            {
               int nullify=0;
               int p2=getpoolcreature(pool[p]->hireid);

               if(pool[p2]->alive && (pool[p2]->location==-1 || location[pool[p2]->location]->type!=SITE_GOVERNMENT_PRISON))
               {  //Charge the boss with racketeering!
                  criminalize(*pool[p2],LAWFLAG_RACKETEERING);
                  //Rack up testimonies against the boss in court!
                  pool[p2]->confessions++;
               }
               if(!nullify)
               {  //Issue a raid on this guy's base!
                  if(pool[p]->base>=0)location[pool[p]->base]->heat+=300;

                  set_color(COLOR_WHITE,COLOR_BLACK,1);
                  move(8,1);
                  addstr(pool[p]->name, gamelog);
                  addstr(" has broken under the pressure and ratted you out!", gamelog);
                  gamelog.newline();

                  getkey();

                  set_color(COLOR_WHITE,COLOR_BLACK,1);
                  move(9,1);
                  addstr("The traitor will testify in court, and safehouses may be compromised.", gamelog);
                  gamelog.nextMessage();

                  getkey();

                  removesquadinfo(*pool[p]);

                  delete_and_remove(pool,p);
                  continue; //no trial for this person; skip to next person
               }
               //else continue to trial
            }

            set_color(COLOR_WHITE,COLOR_BLACK,1);
            move(8,1);
            addstr(pool[p]->name, gamelog);
            addstr(" is moved to the courthouse for trial.", gamelog);
            gamelog.nextMessage();

            getkey();

            pool[p]->location=find_courthouse(*pool[p]);
            Armor prisoner(*armortype[getarmortype("ARMOR_PRISONER")]);
            pool[p]->give_armor(prisoner,NULL);
         }
      }
      else if(location[pool[p]->location]->type==SITE_GOVERNMENT_COURTHOUSE)
      { trial(*pool[p]); clearformess=1; }
      else if(location[pool[p]->location]->type==SITE_GOVERNMENT_PRISON)
         if(prison(*pool[p])) clearformess=1;
   }

   //NUKE EXECUTION VICTIMS
   for(p=len(pool)-1;p>=0;p--)
   {
      if(pool[p]->location==-1) continue;

      if(location[pool[p]->location]->type==SITE_GOVERNMENT_PRISON&&!pool[p]->alive)
      {
         removesquadinfo(*pool[p]);
         pool[p]->die();
         pool[p]->location=-1;
      }
   }

   //MUST DO AN END OF GAME CHECK HERE BECAUSE OF EXECUTIONS
   endcheck(END_EXECUTED);

   //DISPERSAL CHECK
   dispersalcheck(clearformess);

   //FUND REPORTS
   if(canseethings)fundreport(clearformess);
   ledger.resetMonthlyAmounts();
   if(clearformess) erase();

   //HEAL CLINIC PEOPLE
   for(p=0;p<len(pool);p++)
   {
      if(disbanding) break;
      if(!(pool[p]->alive)) continue;

      if(pool[p]->clinic>0)
      {
         pool[p]->clinic--;

         for(int w=0;w<BODYPARTNUM;w++)
         {
            if((pool[p]->wound[w]&WOUND_NASTYOFF)||(pool[p]->wound[w]&WOUND_CLEANOFF))
               pool[p]->wound[w]=(char)WOUND_CLEANOFF;
            else pool[p]->wound[w]=0;
         }

         int healthdamage = 0;

         if(pool[p]->special[SPECIALWOUND_RIGHTLUNG]!=1)
         {
            pool[p]->special[SPECIALWOUND_RIGHTLUNG]=1;
            if(LCSrandom(2)) healthdamage++;
         }
         if(pool[p]->special[SPECIALWOUND_LEFTLUNG]!=1)
         {
            pool[p]->special[SPECIALWOUND_LEFTLUNG]=1;
            if(LCSrandom(2)) healthdamage++;
         }
         if(pool[p]->special[SPECIALWOUND_HEART]!=1)
         {
            pool[p]->special[SPECIALWOUND_HEART]=1;
            if(LCSrandom(3)) healthdamage++;
         }
         pool[p]->special[SPECIALWOUND_LIVER]=1;
         pool[p]->special[SPECIALWOUND_STOMACH]=1;
         pool[p]->special[SPECIALWOUND_RIGHTKIDNEY]=1;
         pool[p]->special[SPECIALWOUND_LEFTKIDNEY]=1;
         pool[p]->special[SPECIALWOUND_SPLEEN]=1;
         pool[p]->special[SPECIALWOUND_RIBS]=RIBNUM;

         if(!pool[p]->special[SPECIALWOUND_NECK])
            pool[p]->special[SPECIALWOUND_NECK]=2;
         if(!pool[p]->special[SPECIALWOUND_UPPERSPINE])
            pool[p]->special[SPECIALWOUND_UPPERSPINE]=2;
         if(!pool[p]->special[SPECIALWOUND_LOWERSPINE])
            pool[p]->special[SPECIALWOUND_LOWERSPINE]=2;

         // Inflict permanent health damage
         pool[p]->set_attribute(ATTRIBUTE_HEALTH,pool[p]->get_attribute(ATTRIBUTE_HEALTH,0)-healthdamage);
         if(pool[p]->get_attribute(ATTRIBUTE_HEALTH,0)<=0)
            pool[p]->set_attribute(ATTRIBUTE_HEALTH,1);

         if(pool[p]->blood<=20&&pool[p]->clinic<=2)pool[p]->blood=50;
         if(pool[p]->blood<=50&&pool[p]->clinic<=1)pool[p]->blood=75;

         // If at clinic and in critical condition, transfer to university hospital
         if(pool[p]->clinic > 2 &&
            pool[p]->location > -1 &&
            location[pool[p]->location]->type==SITE_HOSPITAL_CLINIC)
         {
            int hospital=find_hospital(*pool[p]);
            if(hospital!=-1)
            {
               pool[p]->location=hospital;
               set_color(COLOR_WHITE,COLOR_BLACK,1);
               move(8,1);
               addstr(pool[p]->name, gamelog);
               addstr(" has been transferred to ", gamelog);
               addstr(location[hospital]->name, gamelog);
               addstr(".", gamelog);
               gamelog.nextMessage();

               getkey();
            }
         }

         // End treatment
         if(pool[p]->clinic==0)
         {
            pool[p]->blood=100;
            if(clearformess) erase();
            else makedelimiter();

            set_color(COLOR_WHITE,COLOR_BLACK,1);
            move(8,1);
            addstr(pool[p]->name, gamelog);
            addstr(" has left ", gamelog);
            addstr(location[pool[p]->location]->name, gamelog);
            addstr(".", gamelog);
            gamelog.nextMessage();

            int hs=find_homeless_shelter(*pool[p]);
            if(hs==-1) hs=0; //TODO: Error unable to find location

            if(location[pool[p]->base]->siege.siege||
               location[pool[p]->base]->renting==RENTING_NOCONTROL)
               pool[p]->base=hs;

            pool[p]->location=pool[p]->base;

            getkey();
         }
      }
   }
}
/* run a tv broadcast */
char news_broadcast(void)
{
    sitealarm=1;
    int p;

    int enemy=0;
    for(int e=0; e<ENCMAX; e++)
    {
        if(encounter[e].exists&&encounter[e].alive)
        {
            if(encounter[e].align==-1)enemy++;
        }
    }

    if(enemy>0)
    {
        clearmessagearea();
        set_color(COLOR_WHITE,COLOR_BLACK,1);
        move(16,1);
        addstr("The Conservatives in the room hurry the Squad, so ", gamelog);
        move(17,1);
        addstr("the broadcast never happens.", gamelog);
        gamelog.newline();

        refresh();
        getch();
        return 0;
    }

    criminalizeparty(LAWFLAG_DISTURBANCE);

    clearmessagearea();
    set_color(COLOR_WHITE,COLOR_BLACK,1);
    move(16,1);
    addstr("The Squad steps in front of the cameras and ", gamelog);
    move(17,1);
    int viewhit=LCSrandom(VIEWNUM);
    switch(viewhit)
    {
    case VIEW_GAY:
        addstr("discusses homosexual rights.", gamelog);
        break;
    case VIEW_DEATHPENALTY:
        addstr("examines the death penalty.", gamelog);
        break;
    case VIEW_TAXES:
        addstr("discusses the tax code.", gamelog);
        break;
    case VIEW_NUCLEARPOWER:
        addstr("runs down nuclear power.", gamelog);
        break;
    case VIEW_ANIMALRESEARCH:
        addstr("discusses the horrors of animal research.", gamelog);
        break;
    case VIEW_POLICEBEHAVIOR:
        addstr("goes over cases of police brutality.", gamelog);
        break;
    case VIEW_TORTURE:
        addstr("discusses prisoner abuse and torture.", gamelog);
        break;
    case VIEW_PRISONS:
        addstr("discusses the prison system's flaws.", gamelog);
        break;
    case VIEW_INTELLIGENCE:
        addstr("debates privacy law.", gamelog);
        break;
    case VIEW_FREESPEECH:
        addstr("talks about free speech.", gamelog);
        break;
    case VIEW_GENETICS:
        addstr("discusses the implications of genetic research.", gamelog);
        break;
    case VIEW_JUSTICES:
        addstr("talks about the record of a Conservative judge.", gamelog);
        break;
    case VIEW_GUNCONTROL:
        addstr("talks about gun control.", gamelog);
        break;
    case VIEW_SWEATSHOPS:
        addstr("brings details about sweatshops to light.", gamelog);
        break;
    case VIEW_POLLUTION:
        addstr("does a show on industrial pollution.", gamelog);
        break;
    case VIEW_CORPORATECULTURE:
        addstr("jokes about corporate culture.", gamelog);
        break;
    case VIEW_CEOSALARY:
        addstr("gives examples of CEO excesses.", gamelog);
        break;
    case VIEW_WOMEN:
        addstr("discusses abortion.", gamelog);
        break;// "Performs an abortion live on the air."
    // Get [LAWFLAG_SPEECH], [LAWFLAG_MURDER], [LAWFLAG_DISTURBANCE] -- LK
    case VIEW_CIVILRIGHTS:
        addstr("debates affirmative action.", gamelog);
        break;
    case VIEW_DRUGS:
        addstr("has a frank talk about drugs.", gamelog);
        break;
    case VIEW_IMMIGRATION:
        addstr("examines the issue of immigration.", gamelog);
        break;
    case VIEW_MILITARY:
        addstr("talks about militarism in modern culture.", gamelog);
        break;
    case VIEW_AMRADIO:
        addstr("discusses other AM radio shows.", gamelog);
        break;
    case VIEW_CABLENEWS:
        addstr("talks about Cable News.", gamelog);
        break;
    case VIEW_LIBERALCRIMESQUAD:
        addstr("lets people know about the Liberal Crime Squad.", gamelog);
        break;
    default:
    case VIEW_LIBERALCRIMESQUADPOS:
        addstr("extols the virtues of the Liberal Crime Squad.", gamelog);
        break;
    case VIEW_CONSERVATIVECRIMESQUAD:
        addstr("demonizes the Conservative Crime Squad.", gamelog);
        break;
    }
    gamelog.newline();

    refresh();
    getch();

    int segmentpower=0;
    int usegmentpower;
    int partysize=0;
    for(p=0; p<6; p++)
    {
        if(activesquad->squad[p]!=NULL)
        {
            if(!activesquad->squad[p]->alive)continue;

            segmentpower+=activesquad->squad[p]->get_attribute(ATTRIBUTE_INTELLIGENCE,true);
            segmentpower+=activesquad->squad[p]->get_attribute(ATTRIBUTE_HEART,true);
            segmentpower+=activesquad->squad[p]->get_attribute(ATTRIBUTE_CHARISMA,true);
            segmentpower+=activesquad->squad[p]->get_skill(SKILL_MUSIC);
            segmentpower+=activesquad->squad[p]->get_skill(SKILL_RELIGION);
            segmentpower+=activesquad->squad[p]->get_skill(SKILL_SCIENCE);
            segmentpower+=activesquad->squad[p]->get_skill(SKILL_BUSINESS);
            segmentpower+=activesquad->squad[p]->get_skill(SKILL_PERSUASION);
            activesquad->squad[p]->train(SKILL_PERSUASION,50);
            partysize++;
        }
    }

    // LCS colors enhance the broadcast significantly
    if(activesquad->stance==SQUADSTANCE_BATTLECOLORS)
        segmentpower = (segmentpower * 3) / 2;

    int segmentbonus=segmentpower/4;
    if(partysize>1)segmentpower/=partysize;
    segmentpower+=segmentbonus;

    clearmessagearea();

    set_color(COLOR_WHITE,COLOR_BLACK,1);
    move(16,1);
    if(segmentpower<25)addstr("The Squad looks completely insane.", gamelog);
    else if(segmentpower<35)addstr("The show really sucks.", gamelog);
    else if(segmentpower<45)addstr("It is a very boring hour.", gamelog);
    else if(segmentpower<55)addstr("It is mediocre TV.", gamelog);
    else if(segmentpower<70)addstr("The show was all right.", gamelog);
    else if(segmentpower<85)addstr("The Squad put on a good show.", gamelog);
    else if(segmentpower<100)addstr("It was thought-provoking, even humorous.", gamelog);
    else addstr("It was the best hour of Cable TV EVER.", gamelog);
    gamelog.newline();

    refresh();
    getch();

    //CHECK PUBLIC OPINION
    change_public_opinion(VIEW_LIBERALCRIMESQUAD,10);
    change_public_opinion(VIEW_LIBERALCRIMESQUADPOS,(segmentpower-50)/10);
    if(viewhit!=VIEW_LIBERALCRIMESQUAD)change_public_opinion(viewhit,(segmentpower-50)/5,1);
    else change_public_opinion(viewhit,segmentpower/10);

    //PRISONER PARTS
    for(p=0; p<6; p++)
    {
        if(activesquad->squad[p]!=NULL)
        {
            if(activesquad->squad[p]->prisoner!=NULL && activesquad->squad[p]->prisoner->alive)
            {
                if(activesquad->squad[p]->prisoner->type==CREATURE_NEWSANCHOR)
                {
                    viewhit=LCSrandom(VIEWNUM);
                    clearmessagearea();

                    set_color(COLOR_WHITE,COLOR_BLACK,1);
                    move(16,1);
                    addstr("The hostage ", gamelog);
                    addstr(activesquad->squad[p]->prisoner->name, gamelog);
                    addstr(" is forced on to ", gamelog);
                    move(17,1);
                    switch(viewhit)
                    {
                    case VIEW_GAY:
                        addstr("discuss homosexual rights.", gamelog);
                        break;
                    case VIEW_DEATHPENALTY:
                        addstr("examine the death penalty.", gamelog);
                        break;
                    case VIEW_TAXES:
                        addstr("discuss the tax code.", gamelog);
                        break;
                    case VIEW_NUCLEARPOWER:
                        addstr("run down nuclear power.", gamelog);
                        break;
                    case VIEW_ANIMALRESEARCH:
                        addstr("discuss the horrors of animal research.", gamelog);
                        break;
                    case VIEW_POLICEBEHAVIOR:
                        addstr("go over cases of police brutality.", gamelog);
                        break;
                    case VIEW_TORTURE:
                        addstr("discuss prisoner abuse and torture.", gamelog);
                        break;
                    case VIEW_PRISONS:
                        addstr("discusses the prison system's flaws.", gamelog);
                        break;
                    case VIEW_INTELLIGENCE:
                        addstr("debate privacy law.", gamelog);
                        break;
                    case VIEW_FREESPEECH:
                        addstr("talk about free speech.", gamelog);
                        break;
                    case VIEW_GENETICS:
                        addstr("discuss the implications of genetic research.", gamelog);
                        break;
                    case VIEW_JUSTICES:
                        addstr("talk about the record of a Conservative judge.", gamelog);
                        break;
                    case VIEW_GUNCONTROL:
                        addstr("talk about gun control.", gamelog);
                        break;
                    case VIEW_SWEATSHOPS:
                        addstr("bring details about sweatshops to light.", gamelog);
                        break;
                    case VIEW_POLLUTION:
                        addstr("do a show on industrial pollution.", gamelog);
                        break;
                    case VIEW_CORPORATECULTURE:
                        addstr("joke about corporate culture.", gamelog);
                        break;
                    case VIEW_CEOSALARY:
                        addstr("give examples of CEO excesses.", gamelog);
                        break;
                    case VIEW_WOMEN:
                        addstr("discuss abortion.", gamelog);
                        break;// "Performs an abortion live on the air."
                    // Get [LAWFLAG_SPEECH], [LAWFLAG_MURDER], [LAWFLAG_DISTURBANCE] -- LK
                    case VIEW_CIVILRIGHTS:
                        addstr("debate affirmative action.", gamelog);
                        break;
                    case VIEW_DRUGS:
                        addstr("have a frank talk about drugs.", gamelog);
                        break;
                    case VIEW_IMMIGRATION:
                        addstr("examine the issue of immigration.", gamelog);
                        break;
                    case VIEW_MILITARY:
                        addstr("talk about militarism in modern culture.", gamelog);
                        break;
                    case VIEW_AMRADIO:
                        addstr("discuss other AM radio shows.", gamelog);
                        break;
                    case VIEW_CABLENEWS:
                        addstr("talk about Cable News.", gamelog);
                        break;
                    case VIEW_LIBERALCRIMESQUAD:
                        addstr("let people know about the Liberal Crime Squad.", gamelog);
                        break;
                    default:
                    case VIEW_LIBERALCRIMESQUADPOS:
                        addstr("extol the virtues of the Liberal Crime Squad.", gamelog);
                        break;
                    case VIEW_CONSERVATIVECRIMESQUAD:
                        addstr("demonize the Conservative Crime Squad.", gamelog);
                        break;
                    }
                    gamelog.newline();

                    usegmentpower=10; //FAME BONUS
                    usegmentpower+=activesquad->squad[p]->prisoner->get_attribute(ATTRIBUTE_INTELLIGENCE,true);
                    usegmentpower+=activesquad->squad[p]->prisoner->get_attribute(ATTRIBUTE_HEART,true);
                    usegmentpower+=activesquad->squad[p]->prisoner->get_attribute(ATTRIBUTE_CHARISMA,true);
                    usegmentpower+=activesquad->squad[p]->prisoner->get_skill(SKILL_PERSUASION);

                    if(viewhit!=VIEW_LIBERALCRIMESQUAD)change_public_opinion(viewhit,(usegmentpower-10)/2);
                    else change_public_opinion(viewhit,usegmentpower/2,1);

                    segmentpower+=usegmentpower;

                    refresh();
                    getch();
                }
                else
                {
                    clearmessagearea();

                    set_color(COLOR_WHITE,COLOR_BLACK,1);
                    move(16,1);
                    addstr(activesquad->squad[p]->prisoner->name, gamelog);
                    addstr(", the hostage, is kept off-air.", gamelog);
                    gamelog.newline();

                    refresh();
                    getch();
                }
            }
        }
    }

    if(sitealienate>=1&&segmentpower>=40)
    {
        sitealienate=0;

        clearmessagearea();

        set_color(COLOR_WHITE,COLOR_BLACK,1);
        move(16,1);
        addstr("Moderates at the station appreciated the show.", gamelog);
        gamelog.newline();
        move(17,1);
        addstr("They no longer feel alienated.", gamelog);
        gamelog.newline();

        refresh();
        getch();
    }

    //POST - SECURITY BLITZ IF IT SUCKED
    if(segmentpower<85 && segmentpower>=25)
    {
        clearmessagearea();

        set_color(COLOR_WHITE,COLOR_BLACK,1);
        move(16,1);
        addstr("Security is waiting for the Squad ", gamelog);
        move(17,1);
        addstr("after the show!", gamelog);
        gamelog.newline();

        refresh();
        getch();

        int numleft=LCSrandom(8)+2;
        for(int e=0; e<ENCMAX; e++)
        {
            if(!encounter[e].exists)
            {
                makecreature(encounter[e],CREATURE_SECURITYGUARD);
                numleft--;
            }
            if(numleft==0)break;
        }
    }
    else
    {
        clearmessagearea();

        set_color(COLOR_WHITE,COLOR_BLACK,1);
        move(16,1);
        addstr("The show was so ", gamelog);
        if(segmentpower<50)
            addstr("hilarious", gamelog);
        else
            addstr("entertaining", gamelog);
        addstr(" that security watched it ", gamelog);
        move(17,1);
        addstr("at their desks.  The Squad might yet escape.", gamelog);
        gamelog.newline();

        refresh();
        getch();
    }

    return 1;
}
/*********************************
**
**   SLEEPERS INFLUENCING
**     PUBLIC OPINION
**
**********************************/
void sleeper_influence(Creature &cr,char &clearformess,char canseethings,int (&libpower)[VIEWNUM])
{
   int power=(cr.get_attribute(ATTRIBUTE_CHARISMA,true)+
              cr.get_attribute(ATTRIBUTE_HEART,true)+
              cr.get_attribute(ATTRIBUTE_INTELLIGENCE,true)+
              cr.get_skill(SKILL_PERSUASION));

   // Profession specific skills
   switch(cr.type)
   {
      case CREATURE_CRITIC_ART:
         power+=cr.get_skill(SKILL_WRITING);
      case CREATURE_PAINTER:
      case CREATURE_SCULPTOR:
         power+=cr.get_skill(SKILL_ART);
         break;
      case CREATURE_CRITIC_MUSIC:
         power+=cr.get_skill(SKILL_WRITING);
      case CREATURE_MUSICIAN:
         power+=cr.get_skill(SKILL_MUSIC);
         break;
      case CREATURE_AUTHOR:
      case CREATURE_JOURNALIST:
         power+=cr.get_skill(SKILL_WRITING);
         break;
      case CREATURE_JUDGE_CONSERVATIVE:
         power+=cr.get_skill(SKILL_WRITING);
      case CREATURE_LAWYER:
         power+=cr.get_skill(SKILL_LAW);
         break;
      case CREATURE_SCIENTIST_LABTECH:
      case CREATURE_SCIENTIST_EMINENT:
         power+=cr.get_skill(SKILL_SCIENCE);
         break;
      case CREATURE_CORPORATE_CEO:
      case CREATURE_CORPORATE_MANAGER:
         power+=cr.get_skill(SKILL_BUSINESS);
         break;
      case CREATURE_PRIEST:
      case CREATURE_NUN:
         power+=cr.get_skill(SKILL_RELIGION);
         break;
      case CREATURE_EDUCATOR:
         power+=cr.get_skill(SKILL_PSYCHOLOGY);
         break;
   }

   // Adjust power for super sleepers
   switch(cr.type)
   {
      case CREATURE_CORPORATE_CEO:
      case CREATURE_POLITICIAN:
      case CREATURE_SCIENTIST_EMINENT:
         power*=20;
         break;
      case CREATURE_DEATHSQUAD:
      case CREATURE_EDUCATOR:
      case CREATURE_MILITARYOFFICER:
         power*=6;
         break;
      case CREATURE_ACTOR:
      case CREATURE_GANGUNIT:
      case CREATURE_MILITARYPOLICE:
      case CREATURE_SEAL:
         power*=4;
         break;
      default:
         power*=2;
         break;
   }

   power=static_cast<int>(power*cr.infiltration);

   switch(cr.type)
   {
      /* Radio Personalities and News Anchors subvert Conservative news stations by
         reducing their audience and twisting views on the issues. As their respective
         media establishments become marginalized, so does their influence. */
      case CREATURE_RADIOPERSONALITY:
         change_public_opinion(VIEW_AMRADIO,1);
         for(int i=0;i<VIEWNUM-3;i++)
         {
            libpower[i]+=power*(100-attitude[VIEW_AMRADIO])/100;
         }
         break;
      case CREATURE_NEWSANCHOR:
         change_public_opinion(VIEW_CABLENEWS,1);
         for(int i=0;i<VIEWNUM-3;i++)
         {
            libpower[i]+=power*(100-attitude[VIEW_CABLENEWS])/100;
         }
         break;
      /* Cultural leaders block - influences cultural issues */
      case CREATURE_PRIEST:
      case CREATURE_PAINTER:
      case CREATURE_SCULPTOR:
      case CREATURE_AUTHOR:
      case CREATURE_JOURNALIST:
      case CREATURE_PSYCHOLOGIST:
      case CREATURE_MUSICIAN:
      case CREATURE_CRITIC_ART:
      case CREATURE_CRITIC_MUSIC:
      case CREATURE_ACTOR:
         libpower[VIEW_WOMEN]+=power;
         libpower[VIEW_CIVILRIGHTS]+=power;
         libpower[VIEW_GAY]+=power;
         libpower[VIEW_FREESPEECH]+=power;
         libpower[VIEW_DRUGS]+=power;
         libpower[VIEW_IMMIGRATION]+=power;
         break;
      /* Legal block - influences an array of social issues */
      case CREATURE_JUDGE_CONSERVATIVE:
         libpower[VIEW_JUSTICES]+=power;
         libpower[VIEW_FREESPEECH]+=power;
         libpower[VIEW_INTELLIGENCE]+=power;
      case CREATURE_LAWYER:
         libpower[VIEW_POLICEBEHAVIOR]+=power;
         libpower[VIEW_DEATHPENALTY]+=power;
         libpower[VIEW_GUNCONTROL]+=power;
         libpower[VIEW_DRUGS]+=power;
         break;
      /* Scientists block */
      case CREATURE_SCIENTIST_EMINENT:
         libpower[VIEW_POLLUTION]+=power;
      case CREATURE_SCIENTIST_LABTECH:
         libpower[VIEW_NUCLEARPOWER]+=power;
         libpower[VIEW_ANIMALRESEARCH]+=power;
         libpower[VIEW_GENETICS]+=power;
         break;
      /* Corporate block */
      case CREATURE_CORPORATE_CEO:
         libpower[VIEW_CEOSALARY]+=power;
      case CREATURE_CORPORATE_MANAGER:
         libpower[VIEW_WOMEN]+=power;
         libpower[VIEW_TAXES]+=power;
         libpower[VIEW_CORPORATECULTURE]+=power;
         libpower[VIEW_SWEATSHOPS]+=power;
         libpower[VIEW_POLLUTION]+=power;
         libpower[VIEW_CIVILRIGHTS]+=power;
         break;
      /* Law enforcement block */
      case CREATURE_DEATHSQUAD:
         libpower[VIEW_PRISONS]+=power;
         libpower[VIEW_DEATHPENALTY]+=power;
      case CREATURE_SWAT:
      case CREATURE_COP:
      case CREATURE_GANGUNIT:
         libpower[VIEW_POLICEBEHAVIOR]+=power;
         libpower[VIEW_DRUGS]+=power;
         libpower[VIEW_TORTURE]+=power;
         libpower[VIEW_GUNCONTROL]+=power;
         libpower[VIEW_PRISONS]+=power;
         break;
      /* Prison block */
      case CREATURE_EDUCATOR:
      case CREATURE_PRISONGUARD:
      case CREATURE_PRISONER:
         libpower[VIEW_POLICEBEHAVIOR]+=power;
         libpower[VIEW_DEATHPENALTY]+=power;
         libpower[VIEW_DRUGS]+=power;
         libpower[VIEW_TORTURE]+=power;
         libpower[VIEW_PRISONS]+=power;
         break;
      /* Intelligence block */
      case CREATURE_SECRET_SERVICE:
         libpower[VIEW_INTELLIGENCE]+=power;
         break;
      case CREATURE_AGENT:
         libpower[VIEW_INTELLIGENCE]+=power;
         libpower[VIEW_TORTURE]+=power;
         libpower[VIEW_PRISONS]+=power;
         libpower[VIEW_FREESPEECH]+=power;
         break;
      /* Military block */
      case CREATURE_MERC:
         libpower[VIEW_GUNCONTROL]+=power;
         break;
      case CREATURE_SOLDIER:
      case CREATURE_VETERAN:
      case CREATURE_MILITARYPOLICE:
      case CREATURE_MILITARYOFFICER:
      case CREATURE_SEAL:
         libpower[VIEW_MILITARY]+=power;
         libpower[VIEW_TORTURE]+=power;
         libpower[VIEW_GAY]+=power;
         libpower[VIEW_WOMEN]+=power;
         break;
      /* Sweatshop workers */
      case CREATURE_WORKER_SWEATSHOP:
         libpower[VIEW_IMMIGRATION]+=power;
         libpower[VIEW_SWEATSHOPS]+=power;
         break;
      /* No influence at all block - for people were liberal anyway, or have no way of doing any good */
      case CREATURE_WORKER_FACTORY_CHILD:
      case CREATURE_GENETIC:
      case CREATURE_GUARDDOG:
      case CREATURE_BUM:
      case CREATURE_CRACKHEAD:
      case CREATURE_TANK:
      case CREATURE_HIPPIE: // too liberal to be a proper sleeper
      case CREATURE_WORKER_FACTORY_UNION: // same
      case CREATURE_JUDGE_LIBERAL: // more again
      case CREATURE_MUTANT:
         return;
      /* Miscellaneous block -- includes everyone else */
      case CREATURE_POLITICIAN:
         {
            int a=LCSrandom(VIEWNUM-5);
            int b=LCSrandom(VIEWNUM-5);
            while(b==a)b=LCSrandom(VIEWNUM-5);
            int c=LCSrandom(VIEWNUM-5);
            while(c==a||c==b)c=LCSrandom(VIEWNUM-5);
            libpower[a]+=power;
            libpower[b]+=power;
            libpower[c]+=power;
         }
         break;
      case CREATURE_FIREFIGHTER:
         if(law[LAW_FREESPEECH]==-2)
         {
            libpower[VIEW_FREESPEECH]+=power;
            break;
         }
      default: // Affect a random issue
         pickrandom(libpower)+=power;
   }
}
Exemple #4
0
void displaystoryheader(newsstoryst& ns, bool liberalguardian, int& y, int header)
{
   switch(ns.type)
   {
   case NEWSSTORY_CCS_NOBACKERS:
      displaycenterednewsfont("FBI HUNTS CCS",5);
      y=13;
      break;
   case NEWSSTORY_CCS_DEFEATED:
      displaycenterednewsfont("RAIDS END CCS",5);
      y=13;
      break;
   case NEWSSTORY_NUDITYARREST:
   case NEWSSTORY_CARTHEFT:
   case NEWSSTORY_WANTEDARREST:
   case NEWSSTORY_DRUGARREST:
   case NEWSSTORY_GRAFFITIARREST:
   case NEWSSTORY_BURIALARREST:
      displaycenterednewsfont("POLICE KILLED",5);
      y=13;
      break;
   case NEWSSTORY_SQUAD_ESCAPED:
   case NEWSSTORY_SQUAD_FLEDATTACK:
      displaycenterednewsfont("LCS ESCAPES",5);
      displaycenterednewsfont("POLICE SIEGE",13);
      break;
   case NEWSSTORY_SQUAD_DEFENDED:
   case NEWSSTORY_SQUAD_BROKESIEGE:
      displaycenterednewsfont("LCS FIGHTS",5);
      displaycenterednewsfont("OFF COPS",13);
      break;
   case NEWSSTORY_SQUAD_KILLED_SIEGEATTACK:
   case NEWSSTORY_SQUAD_KILLED_SIEGEESCAPE:
      if(!liberalguardian)
      {
         displaycenterednewsfont("LCS SIEGE",5);
         displaycenterednewsfont("TRAGIC END",13);
      }
      else
      {
         displaycenterednewsfont("POLICE KILL",5);
         displaycenterednewsfont("LCS MARTYRS",13);
      }
      break;
   case NEWSSTORY_CCS_SITE:
   case NEWSSTORY_CCS_KILLED_SITE:
      if(newscherrybusted<2)
      {
         displaycenterednewsfont("CONSERVATIVE",5);
         displaycenterednewsfont("CRIME SQUAD",13);
      }
      else
      {
         if(ns.positive)
            displaycenterednewsfont("CCS STRIKES",5);//AGAIN?
         else
            displaycenterednewsfont("CCS RAMPAGE",5);
         y=13;
      }
      break;
   default:
      if(ns.positive)
      {
         if(newscherrybusted||liberalguardian)
         {
            
            if(!liberalguardian)
            {
               if(ns.priority>250)
               {
                  y=13;
                  displaycenterednewsfont("UNSTOPPABLE",5);
               }
               else
               {
                  y=13;
                  displaycenterednewsfont("LCS STRIKES",5);
               }
            }
            else
            {
               y=13;
               if(ns.priority>150)
               {
                  change_public_opinion(header,5,1); // Bonus for big story
                  switch(header)
                  {
                  case VIEW_TAXES:
                  case VIEW_SWEATSHOPS:
                  case VIEW_CEOSALARY:
                     displaycenterednewsfont("CLASS WAR",5);
                     break;
                  case VIEW_NUCLEARPOWER:
                     displaycenterednewsfont("MELTDOWN RISK",5);
                     break;
                  case VIEW_POLICEBEHAVIOR:
                     displaycenterednewsfont("LCS VS COPS",5);
                     break;
                  case VIEW_DEATHPENALTY:
                     displaycenterednewsfont("PRISON WAR",5);
                     break;
                  case VIEW_INTELLIGENCE:
                     displaycenterednewsfont("LCS VS CIA",5);
                     break;
                  case VIEW_ANIMALRESEARCH:
                  case VIEW_GENETICS:
                     displaycenterednewsfont("EVIL RESEARCH",5);
                     break;
                  case VIEW_FREESPEECH:
                  case VIEW_GAY:
                  case VIEW_JUSTICES:
                     displaycenterednewsfont("NO JUSTICE",5);
                     break;
                  case VIEW_POLLUTION:
                     displaycenterednewsfont("POLLUTER HIT",5);
                     break;
                  case VIEW_CORPORATECULTURE:
                     displaycenterednewsfont("LCS HITS CORP",5);
                     break;
                  case VIEW_AMRADIO:
                     displaycenterednewsfont("LCS HITS AM",5);
                     break;
                  case VIEW_CABLENEWS:
                     displaycenterednewsfont("LCS HITS TV",5);
                     break;
                  default:
                     displaycenterednewsfont("HEROIC STRIKE",5);
                  }
               }
               else
               {
                  displaycenterednewsfont("LCS STRIKES",5);
               }
            }
         }
         else
         {
            displaycenterednewsfont("LIBERAL CRIME",5);
            displaycenterednewsfont("SQUAD STRIKES",13);
         }
      }
      else
      {
         if(newscherrybusted||liberalguardian)
         {
            if(!liberalguardian)
               displaycenterednewsfont("LCS RAMPAGE",5);
            else
               displaycenterednewsfont("LCS SORRY",5);
            y=13;
         }
         else
         {
            displaycenterednewsfont("LIBERAL CRIME",5);
            displaycenterednewsfont("SQUAD RAMPAGE",13);
         }
      }
      break;
   }
}
/* monthly - guardian - prints liberal guardian special editions */
void printnews(short li,short newspaper)
{
   music.play(MUSIC_NEWSPAPER);
   if(law[LAW_FREESPEECH]==-2)offended_firemen=1;
   erase();
   set_color(COLOR_WHITE,COLOR_BLACK,1);

   if(loottype[li]->get_idname()=="LOOT_CEOPHOTOS") // Tmp -XML
   {
      move(6,1);
      addstr("The Liberal Guardian runs a story featuring photos of a major CEO ", gamelog);
      move(7,1);
      change_public_opinion(VIEW_LIBERALCRIMESQUAD,10);
      change_public_opinion(VIEW_LIBERALCRIMESQUADPOS,10);
      switch(LCSrandom(10))
      {
         case 0:
            addstr("engaging in lewd behavior with animals.", gamelog);
            change_public_opinion(VIEW_ANIMALRESEARCH,15);
            break;
         case 1:addstr("digging up graves and sleeping with the dead.", gamelog);break;
         case 2:
            addstr("participating in a murder.", gamelog);
            change_public_opinion(VIEW_POLICEBEHAVIOR,15);
            change_public_opinion(VIEW_JUSTICES,10);
            break;
         case 3:addstr("engaging in heavy bondage.  A cucumber was involved in some way.", gamelog);break;
         case 4:addstr("tongue-kissing an infamous dictator.", gamelog);break;
         case 5:
            addstr("making out with an FDA official overseeing the CEO's products.", gamelog);
            change_public_opinion(VIEW_GENETICS,10);
            change_public_opinion(VIEW_POLLUTION,10);
            break;
         case 6:addstr("castrating himself.", gamelog);break;
         case 7:addstr("waving a Nazi flag at a supremacist rally.", gamelog);break;
         case 8:
            addstr("torturing an employee with a hot iron.", gamelog);
            change_public_opinion(VIEW_SWEATSHOPS,10);
            break;
         case 9:addstr("playing with feces and urine.", gamelog);break;
      }
      gamelog.newline();
      move(9,1);
      addstr("The major networks and publications take it up and run it for weeks.", gamelog);
      gamelog.newline();
      move(10,1);
      addstr("This is bound to get the Corporations a little riled up.", gamelog);
      gamelog.nextMessage();

      change_public_opinion(VIEW_CEOSALARY,50);
      change_public_opinion(VIEW_CORPORATECULTURE,50);
      offended_corps=1;
   }
   else if(loottype[li]->get_idname()=="LOOT_CEOLOVELETTERS")
   {
      move(6,1);
      addstr("The Liberal Guardian runs a story featuring love letters from a major CEO ", gamelog);
      move(7,1);
      change_public_opinion(VIEW_LIBERALCRIMESQUAD,10);
      change_public_opinion(VIEW_LIBERALCRIMESQUADPOS,10);
      switch(LCSrandom(8))
      {
         case 0:
            addstr("addressed to his pet dog.  Yikes.", gamelog);
            change_public_opinion(VIEW_ANIMALRESEARCH,15);
            break;
         case 1:
            addstr("to the judge that acquit him in a corruption trial.", gamelog);
            change_public_opinion(VIEW_JUSTICES,15);
            break;
         case 2:
            addstr("to an illicit gay lover.", gamelog);
            change_public_opinion(VIEW_GAY,15);
            break;
         case 3:addstr("to himself.  They're very steamy.", gamelog);break;
         case 4:
            addstr("implying that he has enslaved his houseservants.", gamelog);
            change_public_opinion(VIEW_SWEATSHOPS,10);
            break;
         case 5:
            addstr("to the FDA official overseeing the CEO's products.", gamelog);
            change_public_opinion(VIEW_GENETICS,10);
            change_public_opinion(VIEW_POLLUTION,10);
            break;
         case 6:addstr("that seem to touch on every fetish known to man.", gamelog);break;
         case 7:addstr("promising someone company profits in exchange for sexual favors.", gamelog);break;
      }
      gamelog.newline();
      move(9,1);
      addstr("The major networks and publications take it up and run it for weeks.", gamelog);
      gamelog.newline();
      move(10,1);
      addstr("This is bound to get the Corporations a little riled up.", gamelog);
      gamelog.nextMessage();

      change_public_opinion(VIEW_CEOSALARY,50);
      change_public_opinion(VIEW_CORPORATECULTURE,50);
      offended_corps=1;
   }
   else if(loottype[li]->get_idname()=="LOOT_CEOTAXPAPERS")
   {
      move(6,1);
      addstr("The Liberal Guardian runs a story featuring a major CEO's tax papers ", gamelog);
      move(7,1);
      change_public_opinion(VIEW_LIBERALCRIMESQUAD,10);
      change_public_opinion(VIEW_LIBERALCRIMESQUADPOS,10);
      switch(LCSrandom(1))
      {
         default:
            addstr("showing that he has engaged in consistent tax evasion.", gamelog);
            change_public_opinion(VIEW_TAXES,25);
            break;
      }
      gamelog.newline();
      move(9,1);
      addstr("The major networks and publications take it up and run it for weeks.", gamelog);
      gamelog.newline();
      move(10,1);
      addstr("This is bound to get the Corporations a little riled up.", gamelog);
      gamelog.nextMessage();

      change_public_opinion(VIEW_CEOSALARY,50);
      change_public_opinion(VIEW_CORPORATECULTURE,50);
      offended_corps=1;
   }
   else if(loottype[li]->get_idname()=="LOOT_CORPFILES")
   {
      move(6,1);
      addstr("The Liberal Guardian runs a story featuring Corporate files ", gamelog);
      move(7,1);

      change_public_opinion(VIEW_LIBERALCRIMESQUAD,newspaper*10);
      change_public_opinion(VIEW_LIBERALCRIMESQUADPOS,newspaper*10);
      switch(LCSrandom(5))
      {
         case 0:
            addstr("describing a genetic monster created in a lab.", gamelog);
            change_public_opinion(VIEW_GENETICS,50);
            break;
         case 1:
            addstr("with a list of gay employees entitled \"H**o-workers\".", gamelog);
            change_public_opinion(VIEW_GAY,50);
            break;
         case 2:
            addstr("containing a memo: \"Terminate the pregnancy, I terminate you.\"", gamelog);
            change_public_opinion(VIEW_WOMEN,50);
            break;
         case 3:
            addstr("cheerfully describing foreign corporate sweatshops.", gamelog);
            change_public_opinion(VIEW_SWEATSHOPS,50);
            break;
         case 4:
            addstr("describing an intricate tax scheme.", gamelog);
            change_public_opinion(VIEW_TAXES,50);
            break;
      }
      gamelog.newline();
      move(9,1);
      addstr("The major networks and publications take it up and run it for weeks.", gamelog);
      gamelog.newline();
      move(10,1);
      addstr("This is bound to get the Corporations a little riled up.", gamelog);
      gamelog.nextMessage();

      change_public_opinion(VIEW_CEOSALARY,50);
      change_public_opinion(VIEW_CORPORATECULTURE,50);
      offended_corps=1;
   }
   else if(loottype[li]->get_idname()=="LOOT_CCS_BACKERLIST")
   {
      move(5,1);
      addstr("The Liberal Guardian runs more than one thousand pages of documents about ", gamelog);
      gamelog.newline();
      move(6,1);
      addstr("the CCS organization, also revealing in extreme detail the names and ", gamelog);
      gamelog.newline();
      move(7,1);
      addstr("responsibilities of Conservative Crime Squad sympathizers and supporters", gamelog);
      gamelog.newline();
      move(8,1);
      addstr("in the state and federal governments. Sections precisely document the", gamelog);
      gamelog.newline();
      move(9,1);
      addstr("extensive planning to create an extra-judicial death squad that would be", gamelog);
      gamelog.newline();
      move(10,1);
      addstr("above prosecution, and could hunt down law-abiding Liberals and act", gamelog);
      gamelog.newline();
      move(11,1);
      addstr("as a foil when no other enemies were present to direct public energy", gamelog);
      gamelog.newline();
      move(12,1);
      addstr("against.", gamelog);

      move(14,1);
      addstr("The scandal reaches into the heart of the Conservative leadership in the", gamelog);
      gamelog.newline();
      move(15,1);
      addstr("country, and the full ramifications of this revelation may not be felt", gamelog);
      gamelog.newline();
      move(16,1);
      addstr("for months. One thing is clear, however, from the immediate public reaction", gamelog);
      gamelog.newline();
      move(17,1);
      addstr("toward the revelations, and the speed with which even AM Radio and Cable", gamelog);
      gamelog.newline();
      move(18,1);
      addstr("News denounce the CCS.", gamelog);
      gamelog.newline();

      move(20,1);
      addstr("This is the beginning of the end for the Conservative Crime Squad.", gamelog);
      gamelog.nextMessage();

      change_public_opinion(VIEW_INTELLIGENCE,50);
      change_public_opinion(VIEW_CONSERVATIVECRIMESQUAD,100);
      ccsexposure = CCSEXPOSURE_EXPOSED;
   }
   else if(loottype[li]->get_idname()=="LOOT_INTHQDISK"
           || loottype[li]->get_idname()=="LOOT_SECRETDOCUMENTS")
   {
      move(6,1);
      addstr("The Liberal Guardian runs a story featuring CIA and other intelligence files ", gamelog);
      move(7,1);

      change_public_opinion(VIEW_LIBERALCRIMESQUAD,10);
      change_public_opinion(VIEW_LIBERALCRIMESQUADPOS,10);
      switch(LCSrandom(6))
      {
         case 0:addstr("documenting the overthrow of a government.", gamelog);break;
         case 1:
            addstr("documenting the planned assassination of a Liberal federal judge.", gamelog);
            change_public_opinion(VIEW_JUSTICES,50);
            break;
         case 2:addstr("containing private information on innocent citizens.", gamelog);break;
         case 3:
            addstr("documenting \"harmful speech\" made by innocent citizens.", gamelog);
            change_public_opinion(VIEW_FREESPEECH,50);
            break;
         case 4:
            addstr("used to keep tabs on gay citizens.", gamelog);
            change_public_opinion(VIEW_GAY,50);
            break;
         case 5:
            addstr("documenting the infiltration of a pro-choice group.", gamelog);
            change_public_opinion(VIEW_WOMEN,50);
            break;
              }
      gamelog.newline();
      move(9,1);
      addstr("The major networks and publications take it up and run it for weeks.", gamelog);
      gamelog.newline();
      move(10,1);
      addstr("This is bound to get the Government a little riled up.", gamelog);
      gamelog.nextMessage();

      change_public_opinion(VIEW_INTELLIGENCE,50);
      offended_cia=1;
   }
   else if(loottype[li]->get_idname()=="LOOT_POLICERECORDS")
   {
      move(6,1);
      addstr("The Liberal Guardian runs a story featuring police records ", gamelog);
      move(7,1);

      change_public_opinion(VIEW_LIBERALCRIMESQUAD,10);
      change_public_opinion(VIEW_LIBERALCRIMESQUADPOS,10);
      switch(LCSrandom(6))
      {
         case 0:
            addstr("documenting human rights abuses by the force.", gamelog);
            change_public_opinion(VIEW_TORTURE,15);
            break;
         case 1:
            addstr("documenting a police torture case.", gamelog);
            change_public_opinion(VIEW_TORTURE,50);
            break;
         case 2:
            addstr("documenting a systematic invasion of privacy by the force.", gamelog);
            change_public_opinion(VIEW_INTELLIGENCE,15);
            break;
         case 3:
            addstr("documenting a forced confession.", gamelog);
            break;
         case 4:
            addstr("documenting widespread corruption in the force.", gamelog);
            break;
         case 5:
            addstr("documenting gladiatorial matches held between prisoners by guards.", gamelog);
            change_public_opinion(VIEW_DEATHPENALTY,50);
            change_public_opinion(VIEW_PRISONS,20);
            break;
      }
      move(9,1);
      gamelog.newline();
      addstr("The major networks and publications take it up and run it for weeks.", gamelog);
      gamelog.nextMessage();

      change_public_opinion(VIEW_POLICEBEHAVIOR,50);
   }
   else if(loottype[li]->get_idname()=="LOOT_JUDGEFILES")
   {
      move(6,1);
      addstr("The Liberal Guardian runs a story with evidence of a Conservative judge ", gamelog);
      move(7,1);

      change_public_opinion(VIEW_LIBERALCRIMESQUAD,10);
      change_public_opinion(VIEW_LIBERALCRIMESQUADPOS,10);
      switch(LCSrandom(2))
      {
         case 0:addstr("taking bribes to acquit murderers.", gamelog);break;
         case 1:addstr("promising Conservative rulings in exchange for appointments.", gamelog);break;
      }
      gamelog.newline();
      move(8,1);
      addstr("The major networks and publications take it up and run it for weeks.", gamelog);
      gamelog.nextMessage();

      change_public_opinion(VIEW_JUSTICES,50);
   }
   else if(loottype[li]->get_idname()=="LOOT_RESEARCHFILES")
   {
      move(6,1);
      addstr("The Liberal Guardian runs a story featuring research papers ", gamelog);
      move(7,1);

      change_public_opinion(VIEW_LIBERALCRIMESQUAD,10);
      change_public_opinion(VIEW_LIBERALCRIMESQUADPOS,10);
      switch(LCSrandom(4))
      {
         case 0:addstr("documenting horrific animal rights abuses.", gamelog);
            change_public_opinion(VIEW_ANIMALRESEARCH,50);break;
         case 1:addstr("studying the effects of torture on cats.", gamelog);
            change_public_opinion(VIEW_ANIMALRESEARCH,50);break;
         case 2:addstr("covering up the accidental creation of a genetic monster.", gamelog);
            change_public_opinion(VIEW_GENETICS,50);break;
         case 3:addstr("showing human test subjects dying under genetic research.", gamelog);
            change_public_opinion(VIEW_GENETICS,50);break;
      }
      gamelog.newline();
      move(9,1);
      addstr("The major networks and publications take it up and run it for weeks.", gamelog);
      gamelog.nextMessage();
   }
   else if(loottype[li]->get_idname()=="LOOT_PRISONFILES")
   {
      move(6,1);
      addstr("The Liberal Guardian runs a story featuring prison documents ", gamelog);
      move(7,1);

      change_public_opinion(VIEW_LIBERALCRIMESQUAD,10);
      change_public_opinion(VIEW_LIBERALCRIMESQUADPOS,10);
      change_public_opinion(VIEW_PRISONS,50);
      switch(LCSrandom(4))
      {
         case 0:addstr("documenting human rights abuses by prison guards.", gamelog);break;
         case 1:
            addstr("documenting a prison torture case.", gamelog);
            change_public_opinion(VIEW_TORTURE,50);
            break;
         case 2:addstr("documenting widespread corruption among prison employees.", gamelog);break;
         case 3:
            addstr("documenting gladiatorial matches held between prisoners by guards.", gamelog);
      }
      gamelog.newline();
      move(9,1);
      addstr("The major networks and publications take it up and run it for weeks.", gamelog);
      gamelog.nextMessage();

      change_public_opinion(VIEW_DEATHPENALTY,50);
   }
   else if(loottype[li]->get_idname()=="LOOT_CABLENEWSFILES")
   {
      move(6,1);
      addstr("The Liberal Guardian runs a story featuring cable news memos ", gamelog);
      move(7,1);

      change_public_opinion(VIEW_LIBERALCRIMESQUAD,10);
      change_public_opinion(VIEW_LIBERALCRIMESQUADPOS,10);
      switch(LCSrandom(4))
      {
         case 0:addstr("calling their news 'the vanguard of Conservative thought'.", gamelog);break;
         case 1:addstr("mandating negative coverage of Liberal politicians.", gamelog);break;
         case 2:addstr("planning to drum up a false scandal about a Liberal figure.", gamelog);break;
         case 3:addstr("instructing a female anchor to 'get sexier or get a new job'.", gamelog);
            break;
      }
      gamelog.newline();
      move(9,1);
      addstr("The major networks and publications take it up and run it for weeks.", gamelog);
      gamelog.newline();
      move(10,1);
      addstr("This is bound to get the Conservative masses a little riled up.", gamelog);
      gamelog.nextMessage();

      change_public_opinion(VIEW_CABLENEWS,50);
      offended_cablenews=1;
   }
   else if(loottype[li]->get_idname()=="LOOT_AMRADIOFILES")
   {
      move(6,1);
      addstr("The Liberal Guardian runs a story featuring AM radio plans ", gamelog);
      move(7,1);

      change_public_opinion(VIEW_LIBERALCRIMESQUAD,10);
      change_public_opinion(VIEW_LIBERALCRIMESQUADPOS,10);
      switch(LCSrandom(3))
      {
         case 0:addstr("calling listeners 'sheep to be told what to think'.", gamelog);break;
         case 1:addstr("saying 'it's okay to lie, they don't need the truth'.", gamelog);break;
         case 2:addstr("planning to drum up a false scandal about a Liberal figure.", gamelog);break;
      }
      gamelog.newline();
      move(9,1);
      addstr("The major networks and publications take it up and run it for weeks.", gamelog);
      gamelog.newline();
      move(10,1);
      addstr("This is bound to get the Conservative masses a little riled up.", gamelog);
      gamelog.nextMessage();

      change_public_opinion(VIEW_AMRADIO,50);
      offended_amradio=1;
   }

   getkey();
}