Bay 12 Games Forum

Other Projects => Curses => Topic started by: jasonred79 on March 17, 2010, 10:05:12 am

Title: Have you ever *changed* laws in LCS individually?
Post by: jasonred79 on March 17, 2010, 10:05:12 am
OK, we all know how to influence issues. But how is the process of changing laws determined?

To me, it seems that it is not really possible to flip individual laws? Because the supreme court and senate and house will not vote Liberal for those individual laws if they themselves are conservatives?

So, what happens is that you pretty much have to get all issues green, so that the elections go to the liberal party and you get a liberal president and liberal supreme court, who will then change the laws?

Title: Re: Have you ever *changed* laws in LCS individually?
Post by: praguepride on March 17, 2010, 10:18:24 am
Incorrect. In nightmare mode I had the Supreme Court send about 5 issues from C+ to C in various areas.

Looking at the polls I saw those areas were all "high interest" and highly L+ viewpoints. The Supreme Courts was majority C+ and C with only a single M and a single L+ on the bench.

I think societal pressures will influence politicans to vote certain ways, but it is far easier to do when the politicians themselves go your way.
Title: Re: Have you ever *changed* laws in LCS individually?
Post by: jasonred79 on March 17, 2010, 10:43:19 am
Interesting. I guess I will try getting Animal Rights to L+ in an otherwise Arch-Conservative world... and fulfil my dream of the Liberal Canine Squad.
Title: Re: Have you ever *changed* laws in LCS individually?
Post by: praguepride on March 17, 2010, 11:25:38 am
Just keep hitting genetics & cosmetics.

I don't know if it's better to hit the same site every day or to shut it down and wait till it opens up again...
Title: Re: Have you ever *changed* laws in LCS individually?
Post by: Grimith on March 17, 2010, 11:30:06 am
Incorrect. In nightmare mode I had the Supreme Court send about 5 issues from C+ to C in various areas.

See, I presumed that happened not because of societal pressure (that's just bringing forth the issues... and, well, in an C+ Nightmare, the individual laws can't get any redder) but because of the Supreme Justice make-up. Although Conservatives are Conservatives (duh, right?), there's a difference between C and C+ in the game; so, when the opportunity to change an issue from C+ to C is brought to Court, the C Justices could very well side for change. Since the C+ Justices don't begin with a majority of their own at the start of the game (and likely won't get one since the Senate is C at the start and is most apt to only approve C Justices), they have to rely on the C Justices for support... which doesn't quite fall in line the way the C+ Justices would like.

If that makes any sense.
Title: Re: Have you ever *changed* laws in LCS individually?
Post by: praguepride on March 17, 2010, 01:36:09 pm
But I've seen 'C' majority congress reject ideas that would move an issue from C+ -> C

I always thought that the difference between C+ and C was that they were pulled differently on the scale. So while C+ would always tug hard against liberalism, C would just tug a little... (i.e. it takes far less public pressure to convince a C that going towards liberalism is a good idea then C+).

Someone else would need to confirm, but I thought that in a complete vaccum, C and C+ would move towards the C+ and L and L+ would always move towards L+
Title: Re: Have you ever *changed* laws in LCS individually?
Post by: jasonred79 on March 17, 2010, 11:18:21 pm
Congress is different.
Anyhow, in nightmare mode, the supreme court actually starts with 3 C+, 2 C, 3 L, 1 L+.... or it just did in this game I started anyhow. So it's not really unrealistic for them to vote to change issues from C+ to C.
Title: Re: Have you ever *changed* laws in LCS individually?
Post by: Servant Corps on March 18, 2010, 01:09:56 am
I think C+ and L+ are immune to 'bias', as in, they aren't responsive to public pressure at all. C, M, and L Congress however can be affected by popular opinion.
Title: Re: Have you ever *changed* laws in LCS individually?
Post by: Kay12 on March 18, 2010, 01:41:25 am
I think C+ and L+ are immune to 'bias', as in, they aren't responsive to public pressure at all. C, M, and L Congress however can be affected by popular opinion.

This could well be the case. In nightmare mode starts where it starts at 3C+, 2C, 3L and 1L+, the supreme court often changes several laws from C+ to C because there are four who'll always support the C law and very often one or both of the two Cs will support the change too. However, in nightmare starts the popular opinion is 0% in all issues, so it would make sense if the Cs voted for status quo.

Also, in nightmare starts, the congress often votes to pass C+->C laws, sometimes even mustering enough votes to overturn the veto that's lurking behind the corner. This happens despite 0% public support for liberalism.

Conclusion: Source dive necessary.

EDIT: I took some look at it myself. First of all, some issues come biased in supreme court: Free speech and flag burning give a small liberal boost to the supreme court, while gun control gives a conservative boost. Otherwise, this isn't quite the easiest code for me to read (C++? I 'ardly know 'er!), so someone could take a look at this bit...

Code: [Select]
1304 /* politics - causes the supreme court to hand down decisions */
 1305 void supremecourt(char clearformess,char canseethings)
 1306 {
 1307    int c;
 1308    if(canseethings)
 1309    {
 1310       if(clearformess)
 1311       {
 1312          erase();
 1313       }
 1314       else
 1315       {
 1316          makedelimiter(8,0);
 1317       }
 1318       set_color(COLOR_WHITE,COLOR_BLACK,1);
 1319       move(8,1);
 1320       addstr("The Supreme court is handing down decisions!");
 1321
 1322       refresh();
 1323       getch();
 1324    }
 1325
 1326    //CHANGE THINGS AND REPORT
 1327    char num[20];
 1328    if(canseethings)
 1329    {
 1330       erase();
 1331
 1332       set_color(COLOR_WHITE,COLOR_BLACK,1);
 1333
 1334       move(0,0);
 1335       addstr("Supreme Court Watch ");
 1336       itoa(year,num,10);
 1337       addstr(num);
 1338
 1339       set_color(COLOR_WHITE,COLOR_BLACK,0);
 1340    }
 1341
 1342    vector<int> scase;
 1343    vector<int> scasedir;
 1344    int cnum=LCSrandom(5)+2;
 1345    int bias=0;
 1346    char lawtaken[LAWNUM];
 1347    memset(lawtaken,0,LAWNUM*sizeof(char));
 1348
 1349    scase.resize(cnum);
 1350    scasedir.resize(cnum);
 1351    for(c=0;c<cnum;c++)
 1352    {
 1353       do
 1354       {
 1355          scase[c]=LCSrandom(LAWNUM);
 1356       }while(lawtaken[scase[c]]);
 1357
 1358       lawtaken[scase[c]]=1;
 1359
 1360       //Constitutional bias -- free speech, flag burning issues, supreme court
 1361       //is extra liberal, gun control, supreme court is extra conservative
 1362       if(scase[c]==LAW_FREESPEECH || scase[c]==LAW_FLAGBURNING)bias=1;
 1363       else if(scase[c]==LAW_GUNCONTROL)bias=-1;
 1364       else bias=0;
 1365
 1366       if(law[scase[c]]==2)scasedir[c]=-1;
 1367       else if(law[scase[c]]==-2)scasedir[c]=1;
 1368       else
 1369       {
 1370          if(bias)scasedir[c]=bias;
 1371          else if(!LCSrandom(2))scasedir[c]=1;
 1372          else scasedir[c]=-1;
 1373       }
 1374
 1375       if(canseethings)
 1376       {
 1377          move(c*3+2,0);
 1378          char name1[80];
 1379          char name2[80];
 1380          if(!LCSrandom(5)) strcpy(name1,"United States");
 1381          else lastname(name1);
 1382
 1383          lastname(name2);
 1384          if((scase[c]==LAW_LABOR||scase[c]==LAW_CORPORATE||
 1385             scase[c]==LAW_ANIMALRESEARCH||scase[c]==LAW_POLLUTION)&&
 1386             !LCSrandom(5))
 1387          {
 1388             switch(LCSrandom(5))
 1389             {
 1390             case 0:strcat(name2,", Inc.");break;
 1391             case 1:strcat(name2,", L.L.C.");break;
 1392             case 2:strcat(name2," Corp.");break;
 1393             case 3:strcat(name2," Co.");break;
 1394             case 4:strcat(name2,", Ltd.");break;
 1395             }
 1396          }
 1397
 1398          addstr(name1);
 1399          addstr(" vs. ");
 1400          addstr(name2);
 1401
 1402          move(c*3+3,0);
 1403          addstr("A Decision could ");
 1404          if(scasedir[c]==1)set_color(COLOR_GREEN,COLOR_BLACK,1);
 1405          else set_color(COLOR_RED,COLOR_BLACK,1);
 1406          switch(scase[c])
 1407          {
 1408             case LAW_ABORTION:
 1409                if(scasedir[c]==1)addstr("Strengthen Abortion Rights");
 1410                else addstr("Protect the Unborn Child");
 1411                break;
 1412             case LAW_ANIMALRESEARCH:
 1413                if(scasedir[c]==1)addstr("Limit Animal Cruelty");
 1414                else addstr("Expand Animal Research");
 1415                break;
 1416             case LAW_POLICEBEHAVIOR:
 1417                if(scasedir[c]==1)addstr("Curtail Police Misconduct");
 1418                else addstr("Stop Harassment of Police Officers");
 1419                break;
 1420             case LAW_PRIVACY:
 1421                if(scasedir[c]==1)addstr("Enhance Privacy Protection");
 1422                else addstr("Allow Corporations Access to Information");
 1423                break;
 1424             case LAW_DEATHPENALTY:
 1425                if(scasedir[c]==1)addstr("Limit the Death Penalty");
 1426                else addstr("Expand Capital Punishment");
 1427                break;
 1428             case LAW_NUCLEARPOWER:
 1429                if(scasedir[c]==1)addstr("Limit Nuclear Power");
 1430                else addstr("Expand Nuclear Power");
 1431                break;
 1432             case LAW_POLLUTION:
 1433                if(scasedir[c]==1)addstr("Punish Polluters");
 1434                else addstr("Reward Industry");
 1435                break;
 1436             case LAW_LABOR:
 1437                if(scasedir[c]==1)addstr("Enhance Labor Standards");
 1438                else addstr("End Undue Union Influence");
 1439                break;
 1440             case LAW_GAY:
 1441                if(scasedir[c]==1)addstr("Expand Homosexual Rights");
 1442                else addstr("Support the Sanctity of Marriage");
 1443                break;
 1444             case LAW_CORPORATE:
 1445                if(scasedir[c]==1)addstr("Stop Corporate Criminals");
 1446                else addstr("Reward Small Businesses");
 1447                break;
 1448             case LAW_FREESPEECH:
 1449                if(scasedir[c]==1)addstr("Protect Free Speech");
 1450                else addstr("Limit Hurtful Speech");
 1451                break;
 1452             case LAW_TAX:
 1453                if(scasedir[c]==1)addstr("Punish the Wealthy");
 1454                else addstr("Stimulate Economic Growth");
 1455                break;
 1456             case LAW_FLAGBURNING:
 1457                if(scasedir[c]==1)addstr("Limit Prohibitions on Flag Burning");
 1458                else addstr("Protect the Symbol of Our Nation");
 1459                break;
 1460             case LAW_GUNCONTROL:
 1461                if(scasedir[c]==1)addstr("Prevent Gun Violence");
 1462                else addstr("Protect our Second Amendment Rights");
 1463                break;
 1464             case LAW_WOMEN:
 1465                if(scasedir[c]==1)addstr("Expand Women's Rights");
 1466                else addstr("Preserve Traditional Gender Roles");
 1467                break;
 1468             case LAW_CIVILRIGHTS:
 1469                if(scasedir[c]==1)addstr("Expand Civil Rights");
 1470                else addstr("Fight Reverse Discrimination");
 1471                break;
 1472             case LAW_DRUGS:
 1473                if(scasedir[c]==1)addstr("Limit Oppressive Drug Laws");
 1474                else addstr("Strengthen the War On Drugs");
 1475                break;
 1476             case LAW_IMMIGRATION:
 1477                if(scasedir[c]==1)addstr("Protect Immigrant Rights");
 1478                else addstr("Protect our Borders");
 1479                break;
 1480             case LAW_ELECTIONS:
 1481                if(scasedir[c]==1)addstr("Fight Political Corruption");
 1482                else addstr("Limit Regulation of Political Speech");
 1483                break;
 1484             case LAW_MILITARY:
 1485                if(scasedir[c]==1)addstr("Limit Military Spending");
 1486                else addstr("Strengthen our National Defense");
 1487                break;
 1488             case LAW_TORTURE:
 1489                if(scasedir[c]==1)addstr("Protect Human Rights");
 1490                else addstr("Permit Strong Tactics in Interrogations");
 1491                break;
 1492          }
 1493          set_color(COLOR_WHITE,COLOR_BLACK,0);
 1494
 1495          refresh();
 1496       }
 1497    }
 1498
 1499    if(canseethings)
 1500    {
 1501       set_color(COLOR_WHITE,COLOR_BLACK,0);
 1502       move(23,0);
 1503       addstr("Press any key to watch the decisions unfold.");
 1504
 1505       refresh();
 1506       getch();
 1507
 1508       nodelay(stdscr,TRUE);
 1509    }
 1510
 1511
 1512
 1513    for(c=0;c<cnum;c++)
 1514    {
 1515       char yeswin=0;
 1516       int yesvotes=0;
 1517
 1518       int vote;
 1519       //Constitutional bias -- free speech, flag burning issues, supreme court
 1520       //is extra liberal, gun control, supreme court is extra conservative
 1521       if(scase[c]==LAW_FREESPEECH || scase[c]==LAW_FLAGBURNING)bias=1;
 1522       else if(scase[c]==LAW_GUNCONTROL)bias=-1;
 1523       else bias=0;
 1524
 1525       for(int l=0;l<9;l++)
 1526       {
 1527          vote=court[l];
 1528          if(vote>=-1&&vote<=1)vote+=LCSrandom(3)-1+bias;
 1529
 1530          if(law[scase[c]]>vote && scasedir[c]==-1)yesvotes++;
 1531          if(law[scase[c]]<vote && scasedir[c]==1)yesvotes++;
 1532
 1533          if(l==8)
 1534          {
 1535             if(yesvotes>=5)yeswin=1;
 1536          }
 1537
 1538          if(canseethings)
 1539          {
 1540             if(l==8&&yeswin)set_color(COLOR_WHITE,COLOR_BLACK,1);
 1541             else if(l==8)set_color(COLOR_BLACK,COLOR_BLACK,1);
 1542             else set_color(COLOR_WHITE,COLOR_BLACK,0);
 1543             move(c*3+2,63);
 1544             itoa(yesvotes,num,10);
 1545             addstr(num);
 1546             addstr(" for Change");
 1547
 1548             if(l==8&&!yeswin)set_color(COLOR_WHITE,COLOR_BLACK,1);
 1549             else if(l==8)set_color(COLOR_BLACK,COLOR_BLACK,1);
 1550             else set_color(COLOR_WHITE,COLOR_BLACK,0);
 1551             move(c*3+3,63);
 1552             itoa(l+1-yesvotes,num,10);
 1553             addstr(num);
 1554             addstr(" for Status Quo");
 1555
 1556             refresh();
 1557
 1558             pause_ms(60);
 1559
 1560             getch();
 1561          }
 1562       }
 1563
 1564       if(yeswin)law[scase[c]]+=scasedir[c];
 1565    }
 1566
 1567    if(canseethings)
 1568    {
 1569       nodelay(stdscr,FALSE);
 1570
 1571       set_color(COLOR_WHITE,COLOR_BLACK,0);
 1572       move(23,0);
 1573       addstr("Press any key to reflect on what has happened.");
 1574
 1575       refresh();
 1576       getch();
 1577    }
 1578
 1579    //CHANGE A JUSTICE 40% OF THE TIME
 1580    if(LCSrandom(10)>=6)
 1581    {
 1582       if(canseethings)
 1583       {
 1584          erase();
 1585
 1586          set_color(COLOR_WHITE,COLOR_BLACK,1);
 1587
 1588          move(0,0);
 1589          addstr("Changing the Guard!");
 1590       }
 1591
 1592       int j=LCSrandom(9);
 1593
 1594       if(canseethings)
 1595       {
 1596          set_color(COLOR_WHITE,COLOR_BLACK,1);
 1597          move(2,0);
 1598          addstr("Justice ");
 1599          addstr(courtname[j]);
 1600          addstr(", ");
 1601          switch(court[j])
 1602          {
 1603             case -2:addstr("Arch-Conservative");break;
 1604             case -1:addstr("Conservative");break;
 1605             case 0:addstr("moderate");break;
 1606             case 1:addstr("Liberal");break;
 1607             case 2:addstr("Elite Liberal");break;
 1608          }
 1609          addstr(", is stepping down.");
 1610
 1611          set_color(COLOR_WHITE,COLOR_BLACK,0);
 1612          move(7,0);
 1613          addstr("Press any key to see what happens.");
 1614
 1615          refresh();
 1616          getch();
 1617       }
 1618
 1619       generate_name(courtname[j]);
 1620       float president=exec[EXEC_PRESIDENT];
 1621       float sen=0;
 1622       for(int s=0;s<100;s++)sen+=senate[s];
 1623       sen/=100.0f;
 1624
 1625       float consensus=(president+sen)*.5f;
 1626
 1627       if(consensus<-1.5f)court[j]=-2;
 1628       else if(consensus<-.5f)court[j]=-1;
 1629       else if(consensus<.5f)court[j]=0;
 1630       else if(consensus<1.5f)court[j]=1;
 1631       else court[j]=2;
 1632
 1633       if(canseethings)
 1634       {
 1635          move(4,0);
 1636          addstr("After much debate and televised testimony, a new justice,");
 1637          move(5,0);
 1638          addstr("the Honorable ");
 1639          addstr(courtname[j]);
 1640          addstr(", ");
 1641          switch(court[j])
 1642          {
 1643             case -2:addstr("Arch-Conservative");break;
 1644             case -1:addstr("Conservative");break;
 1645             case 0:addstr("moderate");break;
 1646             case 1:addstr("Liberal");break;
 1647             case 2:addstr("Elite Liberal");break;
 1648          }
 1649          addstr(", is appointed to the bench.");
 1650
 1651          set_color(COLOR_WHITE,COLOR_BLACK,0);
 1652          move(7,0);
 1653          addstr("Press any key to reflect on what has happened.");
 1654
 1655          refresh();
 1656          getch();
 1657       }
 1658    }
 1659 }

This is exactly what's so great about open source games, once you've beaten them over and over again and tried every extra challenge there is (solo nightmare wasn't too easy) you can enlighten and entertain yourself by taking a look at the source... nice!
Title: Re: Have you ever *changed* laws in LCS individually?
Post by: Servant Corps on March 18, 2010, 01:53:16 am

I'll translate it later, I'm too sleepy now.
Title: Re: Have you ever *changed* laws in LCS individually?
Post by: Kay12 on March 18, 2010, 02:06:43 am

I'll translate it later, I'm too sleepy now.

Use code boxes, not spoilers, since that very common index variable i has a nice tendency to mess up BBC...
Title: Re: Have you ever *changed* laws in LCS individually?
Post by: Servant Corps on March 18, 2010, 10:15:21 am
Okay, Kay12, this is what you'll need to pay attention to:
Code: [Select]
        if(vote>=-1&&vote<=1)vote+=LCSrandom(3)-1;
What this state is that, if a Congressman is not C+ or L+, the game will randomly determine his politcal position. Popular opinion have no effect.

So, the views of a C congressman would start of as a -1. The game randomly ads a number between 0 and 2, and then subtracts 1. So, a C Congressman's political views will range from C+ to M. Note this though: A C Congressman have a 33% chance of supporting a C+ proposal, but a 66% chance of supporting C or M proposals!

This formula also governs Supreme Court Justices. Presidents and Vice-Preisdents have a different formula.

Code: [Select]
               int vote=(exec[EXEC_PRESIDENT]+                  exec[EXEC_VP]+                  exec[EXEC_STATE]+                  exec[EXEC_ATTORNEY]+LCSrandom(9)-4)/4;
The President and theVice-President take into account views of ehach other, the Sec. of State and the Attorney General.
Title: Re: Have you ever *changed* laws in LCS individually?
Post by: Kay12 on March 18, 2010, 11:16:00 am
If I recall correctly the POTUS always accepts laws that were supported by a VP tie breaker.
Title: Re: Have you ever *changed* laws in LCS individually?
Post by: Servant Corps on March 18, 2010, 11:43:08 am
That is correct, but the VP tie-breaker also uses the same formula as that of the President when deciding whether to vote for the bill or against it.
Title: Re: Have you ever *changed* laws in LCS individually?
Post by: Kay12 on March 18, 2010, 12:38:04 pm
Oh yeah, but the VP may be of a different political alignment, possibly causing somewhat weird but not impossible scenarios. A moderate VP may vote Yea on L+ laws, right? Forcing a C president to sign it.
Title: Re: Have you ever *changed* laws in LCS individually?
Post by: Servant Corps on March 18, 2010, 01:49:06 pm
In old versions of LCS, the game starts with a C administration. Using that formula, you get a range of views between -1 and 0...so it would seem the President and Vice-President would lean either Conservative or Moderate, depending on the RNG.

If you have a Moderate Vice-President instead of a Conservative Vice-President, you have a range of views between -0.75 and 0.25. I would think that would mean that, as laws can only be integers betwen -2 and 2, that the Moderate Vice-President will promote moderation no matter what, and the Conservative President have to follow the Vice-President.

If you get a Liberal Vice-President, the range of views become (-2+[0 to 4])/4...or -0.5 to 0.5. Again, the administration becomes moderate (even the Vice-President have to take into account the views of the President, Sec. of State, and Attorney General.

If you have an Elite-Liberal VP, the range of view is -0.25 to 0.75. So, yet again, the admin. becomes moderate.

What this means is that you can't rely on having a liberal VP (that'll only moderatize the regime)...you are going to need Attorney Generals and Sec. of State to be liberalized too.
Title: Re: Have you ever *changed* laws in LCS individually?
Post by: praguepride on March 19, 2010, 10:24:34 am
I started up a nightmare LCS game in the new alpha and have 5 C+ judges. That gives them the majority so it'll be interesting to see if issues actually change or not.

I think nightmare mode needs more C+ government workers. Right now even with no activity it quickly swings to C or M levels. The C+ president does a good job of stopping it with vetos, but he shouldn't even have to do that. Nightmare only stays nightmare for the first couple of months.
Title: Re: Have you ever *changed* laws in LCS individually?
Post by: Kay12 on March 19, 2010, 10:31:20 am
I started up a nightmare LCS game in the new alpha and have 5 C+ judges. That gives them the majority so it'll be interesting to see if issues actually change or not.

I think nightmare mode needs more C+ government workers. Right now even with no activity it quickly swings to C or M levels. The C+ president does a good job of stopping it with vetos, but he shouldn't even have to do that. Nightmare only stays nightmare for the first couple of months.

Oh yes, it's not supposed to be too hard (read: impossible) BUT I have been wondering how did they manage to get the laws to C+ if the congress want to get rid of those laws...
Title: Re: Have you ever *changed* laws in LCS individually?
Post by: praguepride on March 19, 2010, 11:36:54 am
Exactly. I'm not saying it should be possible, but it seems highly illogical due to the fact that congress changes them back without any provocation.

It shouldn't be "hard" to change the laws from C+ to C, but it should at least require some effort on the player's part. Otherwise why not sim 20 years and wait for the world to reset to M before activating again?

If the regular game drifts towards 'M' as the norm, Nightmare should drift towards 'C' or even 'C+' without player activity, at least in the beginning.
Title: Re: Have you ever *changed* laws in LCS individually?
Post by: Kay12 on March 20, 2010, 02:07:03 am
Well, since popular opinion is always at 00% at nightmare starts and the congress only rarely manages to force laws through, only the supreme court passes liberal laws fairly frequently without player intervention. Still needs some improvement. But in the alpha I think nightmare starts have a more conservative supreme court too.
Title: Re: Have you ever *changed* laws in LCS individually?
Post by: praguepride on March 20, 2010, 09:17:17 am
Yeah, I was using the Alpha version