Fixed
MANY bugs since revision 694.
In revision 695, I fixed an infinite-money bug where you could buy Combat Knives for $20 and sell them for $30 at the Pawnshop (my fix was simply to switch those 2 prices around, now a Combat Knife costs $30 to buy and you can sell it for $20), plus also put in the text "Done buying Liberal tools" for when you're done buying Liberal tools (it was "Leave" before, which was, quite simply, wrong). This involved editing 2 files in the "art" directory: "pawnshop.xml" and "weapons.xml".
In revision 696, I fixed some bugs in "reviewmode.cpp" in the "basemode" directory. It used to be that you could have someone's boss kill them, even if the boss was at another location (such as in jail or in another city). Now your boss can only kill you if you're at the same place. Another fix was, if you release someone from the Liberal Crime Squad and they rat out their boss, then if their boss happens to be someplace like jail or a clinic, the jail or clinic gets heat on it and possibly set up for a siege, rather than having the heat and/or siege go to the boss's base (the place they live at when they aren't in a clinic, hospital, or jail).
In revision 697, I fixed a bug where if one of your Liberals went to a different city but had meetings and/or dates scheduled with people in their previous city, they would still be able to continue meeting with and dating people in the old city while simultaneously being in the new city (this was in "daily.cpp" in the "daily" directory). Now, when a Liberal moves to a different city, all their existing meetings and dates are canceled.
In revision 698, I fixed a bug where it didn't display the full name of each location (namely, it left out the city at the end) when you were in the moving equipment screen that lets you move equipment between bases. So now you can tell which city's Shelter your equipment is at, if it's at a Shelter, for instance. This was in "equipment.cpp" in the "common" directory.
In revision 699, I added display of the current city to site mode and to dates. Also, since there is so much horizontal room in the top line of the screen in site mode, it displays the full name of the city in site mode, not just a 3-letter abbreviation like everywhere else. There was also an oversight of "locations.h" being left out of the Code::Blocks project, but I added it. A new thing is that when you talk to someone at a site, the color of their alignment is shown on the screen where you get a list of options to say (that bright red color reminds you not to accidentally talk to Conservatives about the issues, whereas when it's bright green, you're good to go). An old bug with the skills at the top of the screen not being listed in the correct order was fixed (they've always been listed in the correct order on the "Profile of a Liberal" page, so the relevant bit of that code was reused to make sure the skills would be in the right order on the top of the screen, too). Files in the source code modified in this revision are numerous: the Code::Blocks project file "game.cbp" in the "workspaces" directory, "commondisplay.cpp" in the "common" directory, both "locations.cpp" and "locations.h" in the "locations" directory, "date.cpp" in the "daily" directory, and both "sitemode.cpp" and "talk.cpp" in the "sitemode" directory. And of course I've compiled new binaries of both the Release and Debug builds of "crimesquad.exe", as with the previous revisions I uploaded.
In revision 700, I alphabetized the list of skills in "creature.h", so that when you look at the Profile of a Liberal and press up or down to see all the skills, they'll be in alphabetical order (and of course compiled and built it into Release and Debug builds of "crimesquad.exe" again).
In revision 701, I alphabetized the list of crimes in "includes.h", so that when you look at the Profile of a Liberal and press up or down to see all the crimes they committed, they'll also be in alphabetical order too. And I compiled both builds, yet again.
In revision 702, I improved location name handling even further than the improvements in revision 699, replaced the word "and" with the symbol "&" in "Brookyn and Queens" and "Outskirts and Orange County", and gave Washington DC a city description ("The Nation's Capital."). The most obvious changes are if you press "F" on the main screen to go forth to different parts of cities in multiple-city mode, or if you look at your list of sleepers in multiple-city mode and look at the ones whose location is a city itself rather than a place IN a city. None of these changes in revision 702 affect single-city mode, it's all to do with location names in multiple-city mode.
In revision 703, I added Residential Bomb Shelter (CCS Hideout #2) and Outdoor Bunker (CCS Hideout #3) back to single-city mode, since they were missing from single-city mode for some reason, making it impossible to defeat the CCS through the usual method of taking over all 3 CCS hideouts in single-city mode.
In revision 704, I fixed the option during character creation to start out with maps of several sites downtown (although the downtown sites didn't inherit the "mapped" property from the downtown district like they ought to so I had to set it manually for every single one of them, which is another bug that needs to be fixed in the future, because new locations are supposed to inherit the "mapped" property and several other properties from their parent location, but that seems to be broken). Getting maps of the downtown sites works the same as before for single-city mode, and for multiple-city mode, it applies only to your starting city of Seattle. The starting gender is now randomly either male or female, with the opposite gender as the 2nd option and intersex as the 3rd option (it used to be that female was always the starting gender, male was the 2nd option, and intersex was the 3rd option). Gun control laws were set twice when starting a new game while prison laws weren't set at all; this has been fixed, now each type of law is set exactly once. The "PDA" item has been renamed to "Tablet" since tablets such as iPads and other brands of tablets are very popular and common now, while nobody uses PDAs anymore now that smartphones and tablets can fulfill all their duties and more (however, only the display name was changed from "PDA" to "Tablet"; the internal name of "LOOT_PDA" was kept the same for compatibility reasons).
In revision 705, I removed the option to re-seed the Random Number Generator every time it's used from "init.txt", as per Jonathan S. Fox's advice not to allow end users to use such a feature as they could abuse it for cheating and it might impede debugging. It has been changed to a commented-out "#define" compiler flag in "includes.h" so that this option may only be used for debugging purposes.
In revision 706, I fixed a bug with the game getting Liberals and Conservatives mixed up after someone counterattacks in a fight for the rest of that round of fighting (due to the boolean variable "goodguyattack" getting toggled once before the counterattack but not getting toggled back again afterwards). This was in "fight.cpp" in the "combat" directory.
In revision 707, I fixed statename() in "misc.cpp" to behave the way it should and not just return random results all the time. This enables getting the correct names of states with numbers in the range 0 to 49. Calling it with a random number such as -1 is how to get a random state's name. Fixed bug with Vermont always voting "Nay" on Constitutional amendments (it was supposed to be Utah, not Vermont, and this didn't take into account Arch-Conservative amendments, which a state like Utah would approve of). Improved month-name handling so that when you get a 4-character abbreviation, you get "May", "June", or "July", rather than "May." (note the period), "Jun.", or "Jul.", by adding a new getmonth() function. Improved a bit in "fight.cpp" where someone injured would either call out "Mommy!" or "What about my children?"... now, humans under age 20 call out "Mommy!", humans age 20 or older (along with tanks) ask "What about my children?", dogs ask "What about my puppies?", and genetic monsters ask "What about my offspring?".
In revision 708, I switched over the 1 last place where month names were not obtained by the new getmonth() function. This really should have been part of revision 707, it was an accidental oversight not to include it.
In revision 709, I put in proper bias numbers for all 50 states for Constitutional amendments into "endgame.cpp" in the "monthly" directory. This made it harder to pass amendments (less "Yea" votes than before), so I made another minor modification so that half the time, you only need 3 out of the 4 votes to go the right way in a state to get a "Yea" vote. Now the amount of "Yea" and "Nay" votes is about the same as prior to my bias adjustments. However, you'll notice that the states that tend to object to Elite Liberal amendments are usually right-wing states, while the states that tend to object to Arch-Conservative amendments are usually left-wing states. This makes for a more accurate representation of the polarization between red and blue states. Each state has a bias number from -6 (Utah only) to +6 (Massachusetts only). The 5 swing states of Colorado, Florida, Nevada, Ohio, and Virginia are the only states with no bias either way (bias of 0). For all other states besides the 7 I mentioned, they are biased by an amount from 1 to 5 in either the Liberal or Conservative direction. I based my bias numbers on analysis of polling data, the election results for all Presidential elections between 1988 and 2012 (with much greater emphasis on more recent elections), and a bit of subjective tinkering based on my personal opinions of how Liberal or Conservative each state is (which are fairly accurate opinions, as I have done plenty of reading of Nate Silver's FiveThirtyEight blog and followed election results for years). A bias of 1 in either direction indicates the state only slightly leans that direction and could go the other way relatively easily. A bias of 2 in either direction indicates the state is more strongly biased in a direction, but could still occasionally go the other way in a Presidential election. A bias of 3 in either direction indicates it is a solidly red or blue state that would probably only go the other way in a blowout election (think 1984 or 1964). A bias of 4 in either direction indicates a state that would probably stay Liberal or Conservative in a blowout election, too (but not 100% guaranteed). A bias of 5 in either direction indicates a state that is pretty much 100% guaranteed to go a certain direction no matter what. A bias of 6 in either direction is a rare honor reserved for the most Arch-Conservative and most Elite Liberal states in the Union, Utah and Massachusetts, respectively. And of course states with a bias of 0 have the same exact views as the nation at large and are not biased at all.
In revision 710, I fixed a bug where sometimes money would end up as an item in your inventory at a base, rather than properly being added to the amount of money you have and removed as an item, adding a new function called getloot() to "location.cpp" in the "location" directory for standardized transfer of loot to a base with proper handling of money.
In revision 711, I just did a very very minor layout fix, wrong indentation in one line of code that I wrote in the previous revision, not even worth mentioning.
In revision 712, I fixed an infinite-loop bug if you tried building more than 5 business fronts, by increasing the number of different business front possibilities from 5 to 28, and fixed another related infinite-loop bug with homeless shelters. I also fixed the layout and formatting of dealership() in shopsnstuff.cpp, the function where sleeper car salesmen do their stuff. I also made it so sleeper car salesmen can only get you discounts in the same city as them, sleeper police and firemen only warn you about raids in the same city as them (since each city has separate police and fire services from other cities), and sleeper judges and lawyers can only help you out if your trial is in the same city as them. However, sleeper CEOs, CCS vigilantes, and CIA Agents can still warn you about raids in other cities, since all their organizations operate nationally or internationally and have lots of information-sharing, so it would make perfect sense for a CIA Agent in one city to warn you about a CIA raid on one of your hideouts in another city. But not with police or firemen, they operate at the local level, every city has a separate police department and fire department from other cities. There are 2 more fixes for trials: a person whose base was no longer being rented would get moved to any old homeless shelter, rather than the homeless shelter in the same city as them, and sleeper judges were supposed to prevent confessions by former LCS members who betrayed you. Now both those things are fixed, and if your base is no longer rented by the LCS, you end up at the homeless shelter in the same city where your trial happened, and a sleeper judge really does now prevent confessions.
Revision 713 has a LONG list of changes, here it is:
- Enabled "Praying won't help you now!" threat in talk.cpp by changing LCSrandom(3) to LCSrandom(4), fixed "Nobeast" typo in talk.cpp to "No beast".
- Set default thing to teach other Liberals (Fighting, Covert Ops, or Politics) for all Creature types in activate.cpp.
- New ultra-awesome Elite Liberal issue text for all the issues if you bring the country to Elite Liberal status (i.e., win the game in No Compromise Classic Mode where all laws must be Elite Liberal rather than Democrat Mode) in liberalagenda.cpp.
- Removed Political Activists from list of creature types in sleeper_update.cpp with no effect when advocating Liberalism as Sleepers (Political Activist Sleepers occur when Teenager Sleepers turn 18 years old, and it would be reasonable to assume that the longer someone is a Sleeper, the more effective they get, which was the opposite of what happened to Teenager Sleepers who turned 18). Now Political Activist Sleepers have the same amount of effect as Teenager Sleepers, no more, no less.
- Also made Politicians super Sleepers like Eminent Scientists and Corporate CEOs, also in sleeper_update.cpp, with a power multiplier of 20, plus Politician Sleepers now affect 3 random non-media/LCS/CCS issues (using VIEWNUM-5), plus they have enhanced embezzlement abilities and can leak intelligence documents.
- Fixed finding of homeless shelter (a.k.a. SITE_RESIDENTIAL_SHELTER) to always use find_homeless_shelter() so that it would find one in the same city, rather than the first one (which would always be Seattle in multi-city mode) (this fix was done in many different places in different files).
- Updated locations.h so that the sites are in a proper order (there are checks made in various parts of the code to see if getting a site mapped is useless, and those are done by seeing if the site's type <= SITE_RESIDENTIAL_SHELTER, so there needed to be a slight rearrangement so that those checks would return correct results).
- Maxed-out skills now show as cyan not just in the "Profile of a Liberal" status pages but also in the smaller display on the top of the screen most of the time.
- Second-in-command to a King is a Chancellor, not a Vice President (if you lose and the country is Reaganified... and my info on Chancellor being second highest ranking comes from the game Chrono Trigger).
- Added and used a find_courthouse() similar to the ones for homeless shelter, police station, and clinic, so Court Houses would be in the same city too (hopefully it'll be working so that the entire justice system, from arrest to police station to courthouse to prison to being released at the homeless shelter, all stays in the same city, but of course this means every city needs to have a homeless shelter, police station, courthouse, and prison, or else the game will have errors).
- Crack Head renamed to Crackhead, and Court House renamed to Courthouse. Firefighter, Cable News Anchor, Liberal Judge, and Hangin' Judge have those names consistently (a sleeper Hangin' Judge is WAY more effective than a sleeper Liberal Judge, now it's easier to tell them apart once they've joined the LCS).
- Socialite clothing now depends on gender instead of being random (resulting in clothes for wrong gender half the time). That is just part of extensive code cleanup in getnames.cpp and creaturetypes.cpp (creaturetypes.cpp had WAY too many lines of code, I made it more compact using various tricks like conditionals instead of if...else statements and it should still work fine).
- Instead of picking a type of work site that might not exist in the current city (e.g. Lawyers can work in the White House but only Washington DC has a White House so a Lawyer in a different city wanting to work at a White House is gonna run into some problems), now verifyworklocation() picks randomly from all acceptable work locations in the current city (so a Lawyer would be willing to settle for a Courthouse instead).
- Shorter short name for Used Car Dealership (it was WAY too long in multi-city mode, now the short name is just "Used Cars" like it should be).
- Improved PNG compression for siteblocks.png & specials.png (the images are identical, just smaller file size).
Revision 714 changes:
- "Cellphone" renamed to "Smartphone" in loot.xml. (Cell Phone is usually spelled with 2 words instead of 1, however nowadays the word "Smartphone" is usually used for iPhones, Android phones, and other more advanced phones, and it is still a single word. And the LCS, if it stole cell phones, would most likely try to steal smartphones since they're more valuable. However, I didn't increase the price, since prices for electronics fall rapidly, especially used electronics, and they're always coming out with new models, so all I changed was the name.)
- New hisher() function for Creatures, similar to heshe(), implemented and put into wide use.
- More complex handling of drug overdoses of hostages during interrogation, look at the changes to interrogation.cpp for details. Basically if nobody in the interrogation team has First Aid skill, then any overdose of drugs that would have previously led to a decrease of health by 1 now leads to death. But if someone in the interrogation team has very high First Aid skill, then drug overdoses don't do any health damage at all. If there's someone with First Aid skill but it's not very high, there is a decrease of health by 1 just as before. The details are a bit more complicated but those are the basics.
- Several occurrences of "addstr(something), gamelog;" fixed to "addstr(something, gamelog);"
Revision 715 changes:
The new function init_console() is now run at the beginning of the game, initializing which code page the console uses, and it should work cross-platform. The main thing this fixes is, now users of non-U.S. English versions of Windows will have the correct extended characters displayed as long as they are using a TrueType font like Lucida Console for their console display, rather than using raster fonts (all of which are variants of Terminal). If users of non-U.S. English versions of Windows wish to have the correct extended characters also be displayed even when using raster fonts in a console window, this can only be done by changing a setting in Control Panel. Specifically, under International and Language Settings, you change the Default Language for Non-Unicode Applications to be U.S. English, Code Page 437, the standard code page that IBM developed for DOS versions in the United States, which also happens to be the code page that Liberal Crime Squad uses. For international users of Windows who do not want to mess with Control Panel settings, simply set the font for your console window of Liberal Crime Squad to Lucida Console (any size works) and you'll be good to go. As for users of other operating systems such as Linux and Mac OS X, more testing and feedback is needed on whether the proper characters are displayed on the screen.
Yep... take a look at the history, good stuff:
https://sourceforge.net/p/lcsgame/code/log/