Bay 12 Games Forum

Please login or register.

Login with username, password and session length
Advanced search  
Pages: 1 ... 39 40 [41] 42 43 ... 57

Author Topic: Terra Vitae Fork (version 2.0 released!)  (Read 339550 times)

SlatersQuest

  • Bay Watcher
    • View Profile
Re: Terra Vitae Mod (version 1.4 released!)
« Reply #600 on: March 28, 2018, 10:03:11 pm »

On the clues, I think the real issue I had was that if I had previously cleared an old super-villain lair that had been re-occupied by a new super-villain, taking out that new super-villain would sometimes give me "new" evidence even though you're meant to clear out a super-villain from each lair. In any case, I could not get the final game-winning mission to trigger despite this, so I suspect that although the evidence variables are working as intended, the way the game checks for what to tell the player after clearing a super-villain lair is somehow wonky.

This is possible - I'm working on it. I believe I have found the minion-crash bug; I am now working on figuring out how to solve it. It has to do with minions spawning that don't have an associated supervillain to template off of (minions are subtly different depending on whether the villain is a crimelord, mad scientist, alien invader, etc.).

Quote
On the lairs, it might just be my ignorance showing here--are there only supposed to be 3 lairs per game? For example, in my game, I had found the Cave Complex, Mausoleum, and Secret Laboratory, and couldn't find any more. Only in the Secret Laboratory was I unable to find the supervillain's location in the site. If they are procedurally-generated, is it possible to make it so that when they are "closed down" they can regenerate into a new map? I'm not totally sure if this is already in the game, but I seem to recall that the TV/Radio sites change their layout if they've been shut down for a time.

That's an excellent idea. I'll try to incorporate that!

Quote
Also, is there a point to "using" the traps in those lairs? They guarantee an encounter with enemies and obscure the villain's location, so I can understand their purpose on that end, but using the traps would always injure one of my precious liberals, or at least try to. Since you can just abstain from using the trap locations, I didn't understand that purpose. Unless this is already implemented, perhaps using the trap could occasionally net you valuable loot?

It's another bug (which I already found and fixed in the process of tracking down the minion crash bug). Traps are supposed to spring on you the moment you stumble into them.


Quote
Finally, perhaps this is my misunderstanding of the general situation in the Terra Vitae world, but fighting the super-villain's minions in his lair will get you a criminal record. This is a debatable point, but I would think that fighting in such a secret lair would prevent evidence from ever reaching society at large. If the current state of affairs is meant to be explained by their control over the government, maybe such activities would only net you a criminal record if the laws are conservative enough?

Nope, this is yet another bug. Thanks for pointing it out!


Quote
Thanks for all that you do working on this mod! Sorry about this being lengthy/probably unreadable.

No, you're finding more bugs. You're welcome! :)


Sometimes my game crashes at the end of the month, it's a little annoying.

I haven't experienced this one for a while and I believe I fixed it. However, rare random crashes are hard to fix because they're difficult to isolate. Moreover, they are avoidable if you just restart. This makes them lower priority than things that really do break the game.
Logged

CriticallyAshamed

  • Bay Watcher
    • View Profile
Re: Terra Vitae Mod (version 1.4 released!)
« Reply #601 on: March 29, 2018, 08:28:20 am »

Could you please implement a method to remove movies? There is such a huge amount of movie spam and it doesn't clear the remaining text very well.
Logged

SlatersQuest

  • Bay Watcher
    • View Profile
Re: Terra Vitae Mod (version 1.4 released!)
« Reply #602 on: March 29, 2018, 08:31:27 am »

Could you please implement a method to remove movies? There is such a huge amount of movie spam and it doesn't clear the remaining text very well.

Movies can already be removed with the command "Cheat Clear Movies" in the review mode. This will remove all movies from the game (although new movies will continue to spawn).
Logged

CriticallyAshamed

  • Bay Watcher
    • View Profile
Re: Terra Vitae Mod (version 1.4 released!)
« Reply #603 on: March 29, 2018, 08:49:36 am »

Movies can already be removed with the command "Cheat Clear Movies" in the review mode. This will remove all movies from the game (although new movies will continue to spawn).

Sorry, to clarify, it would be a lot more pleasant experience if we could choose "Use movie feature" ala "Enable Stalinist Crime Squad". I don't know the intricacies of LCS codebase but this wouldn't be incredibly hard to implement (normally) while providing a useful feature. Rather than having to regularly clear all the movies.
Logged

SlatersQuest

  • Bay Watcher
    • View Profile
Re: Terra Vitae Mod (version 1.4 released!)
« Reply #604 on: March 29, 2018, 11:00:32 am »

Superminion crash bug fixed.

*sigh* if you really want movies to not be part of the game at all, I suppose I can try to work that in. It will unbalance the game, mind you. The thing is that I like the movies, although there were too many of them in the last release, so I reduced that number.


Edit: multiple date crash bug fixed.
« Last Edit: March 29, 2018, 11:04:59 am by SlatersQuest »
Logged

Blood_Librarian

  • Bay Watcher
  • What is happening?
    • View Profile
Re: Terra Vitae Mod (version 1.4 released!)
« Reply #605 on: March 29, 2018, 11:37:06 am »

In just 4-5 months I got 40 movies the last time i played.

There should be 3-8 movies Per year, with the corresponding effect.
Logged
if you want something wacky
Quote from: ChiefWaffles, MAR Discord
I continue to be puzzled by BL's attempts to make Aratam blatantly evil

couchchou

  • Bay Watcher
    • View Profile
Re: Terra Vitae Mod (version 1.4 released!)
« Reply #606 on: March 29, 2018, 12:50:09 pm »

I have no clue if this will help you at all, but I have a save using the "verbose save" system IsaacG set up--I'm not sure if you're able to use it since I'm running this with Windows 10--But it contains a few of the bugs I mentioned:

1. A Supervillain sieges a site upon the next day, and fighting in that area will cause the game to crash upon encountering an enemy. You've already found and fixed this one, it seems, though.

You said that it's probably because the superpowered minions are not properly tied to their super-villain master. It seems that way because if immediately after uncovering the NEC, the game will occasionally crash while loitering about places where superpowered minions spawn, and you'll never actually see superpowered minions in these sites unless you wait a month or two. Could it be that these minions don't have a master yet, so the game crashes when trying to spawn a minion? 

2. There's also the Mysterious Cave Complex in this one, and for the life of me I can't find the Super-villain's location. If you look at the map in that site, there's an exclamation mark just north-east of your start that is inaccessible. That's what gave me the idea that sometimes these sites might be placing the super-villain inside a wall or something.

I do think that having the lairs change their layout after being closed down would be a handy soft fix to this issue, since eventually the super-villain's location will be placed somewhere accessible.

I can't seem to figure out how to attach a save file here, if anyone has any guidance or really wants it, let me know how.
Logged

SlatersQuest

  • Bay Watcher
    • View Profile
Re: Terra Vitae Mod (version 1.4 released!)
« Reply #607 on: March 29, 2018, 08:38:30 pm »

I've just playtested through four years of the LCS sitting around doing nothing, and tweaked the background movie-creation system so that there are about five movies per year. This is if the LCS does nothing, however (and the CCS is either unformed or defeated). LCS and CCS activity will create more movies. This is an intended feature and I will not be changing it.

I've also decided that the next version should include a cheat command that disables movie inspiration. This will prevent any new movies from being inspired. It will not be saved to the save file, so you'll have to re-enter the command if you want to quit the game and restart it, but it will work for as long as the game continues to run. This also won't prevent any existing movies from working normally (although there already is a command to clear them, too). This will enable a player to decide whether to temporarily suspend movie inspiration, but keep any existing movies in play.

*

1. Yes, that's exactly what's happening: the minions don't have a master, and there was actually a deliberate line of code that was designed to cause the game to crash if that happened. There was also a line of code that was supposed to print an error message to the console before crashing, so that you or I would know what bug had caused the crash and so could be easily found and fixed. Unfortunately, that error message was also buggy because this game uses the Curses library instead of the ansi C fprintf(stderr, %s) statement, which meant that it wasn't obvious at first what was causing the bug.  >:(

Also, the code was written to work in multiple-city mode, so it looked for the first supervillain lair in the corresponding city. In multi-city mode, there is only one lair per city, so if minions are spawning in a city, you know that the first lair is going to have a supervillain else minions wouldn't spawn. However, in single-city mode, minions can spawn if the first lair is vacant but the second or third is occupied. What I did to fix it was assume that any unfindable villain is of the "crimelord" type, which is a reasonable fix, but it would still be better if it could find an actual villain.

2. Shutting down a villain lair should require finding and killing the supervillain, though. Have you been able to shut down lairs without killing the supervillain? If so, then that's yet another bug...
Logged

couchchou

  • Bay Watcher
    • View Profile
Re: Terra Vitae Mod (version 1.4 released!)
« Reply #608 on: March 30, 2018, 12:50:48 am »

Quote
2. Shutting down a villain lair should require finding and killing the supervillain, though. Have you been able to shut down lairs without killing the supervillain? If so, then that's yet another bug...

If that's the case, then it might be two bugs:

--Killing the super-villain has never shut down the site for me, it's always remained accessible, but if visited immediately afterward, the game will crash eventually, presumably because it's trying to spawn masterless superpowered minions.

--The only way I've managed to shut down the site is through destroying enough walls in the site through the liberal application of fire. (pun intended?) I discovered this because I was trying to find out if the super-villain's location was inside one of the walls but after destroying enough of the walls the site shut down and instead became completely repaired once the site was open again.

Edit: I think I have found a possible reason for the Super-villain's lair to not spawn. In the sitemaps.txt file in the art folder, the Super-villain's lair is placed before the traps, so perhaps the placement of the traps is overwriting the lair?

One more edit: I might have an answer for the previous issue I had mentioned with the 3 clues against the NEC: They seem to reset upon closing and loading up the game--maybe their value is being assigned in that initializing function each time the game is started?
« Last Edit: March 31, 2018, 12:35:48 am by couchchou »
Logged

SlatersQuest

  • Bay Watcher
    • View Profile
Re: Terra Vitae Mod (version 1.4 released!)
« Reply #609 on: April 01, 2018, 09:52:57 am »

-Fixed the bug causing LCS members to be criminalized for actions at supervillain lairs

-Swapped the locations of trap deployment and supervillain deployment in lairs. Hopefully this will solve the above problem.

-Fixed a bug in the code of saving and loading supervillain status. I am not sure if this is what was causing the problem, but let's hope so.

-Added the cheat command "Disable Movies" that prevents new movies from being inspired (but does not remove existing movies or characters from the system as there are already cheat commands for these)
Logged

CriticallyAshamed

  • Bay Watcher
    • View Profile
Re: Terra Vitae Mod (version 1.4 released!)
« Reply #610 on: April 03, 2018, 09:18:16 am »

*sigh* if you really want movies to not be part of the game at all, I suppose I can try to work that in. It will unbalance the game, mind you. The thing is that I like the movies, although there were too many of them in the last release, so I reduced that number.

I appreciate that it is a feature you like and removal may unbalance the game. As you note however, I was getting way too many movies, perhaps the fact that I started in Conservative++ mode? In addition, something is not right in that they do not clear the screen properly.

-Added the cheat command "Disable Movies" that prevents new movies from being inspired (but does not remove existing movies or characters from the system as there are already cheat commands for these)

I greatly appreciate this. It's pleasant to see such a quick response (:
Logged

Blood_Librarian

  • Bay Watcher
  • What is happening?
    • View Profile
Re: Terra Vitae Mod (version 1.4 released!)
« Reply #611 on: April 03, 2018, 01:24:15 pm »

I played on the all-policies-are-conservative thing, and I get tons of movies.
Logged
if you want something wacky
Quote from: ChiefWaffles, MAR Discord
I continue to be puzzled by BL's attempts to make Aratam blatantly evil

SlatersQuest

  • Bay Watcher
    • View Profile
Re: Terra Vitae Mod (version 1.4 released!)
« Reply #612 on: April 04, 2018, 12:09:17 am »

You will still get tons of movies until I update the game files on DFFD, which I am still working on because I want to be sure that there aren't any more changes that I want to make that will make saves incompatible. Basically, I want version 1.5 to be the last major release, and all post-1.5 versions to be save-compatible with 1.5. I don't want to have to make a 1.6. I am therefore holding off on the release until I'm reasonably confident that it is ready.
Logged

SlatersQuest

  • Bay Watcher
    • View Profile
Re: Terra Vitae Mod (version 1.4 released!)
« Reply #613 on: April 05, 2018, 10:09:28 pm »

I am encountering a terrible bug. Please see the code below.

Notice that lobbies and factions are defined in almost exactly the same way, and the syntax used for saving and loading them from the save file is likewise identical. However, upon loading the first byte from the line {fread(&factionlist[f]->AbbreviatedName, sizeof(char), CREATURE_NAMELEN, h);}, the game immediately crashes. I cannot understand how this could be crashing.

Does anybody else have any idea of what could be going on here???



In Includes.h
Code: [Select]
class Lobby
{
public:
   char LobbyName[CREATURE_NAMELEN];
   int LobbyCreatures[CREATURENUM];
   int LobbyLaws[LAWNUM];
   
   int spectrum;
   int alignment_max_liberal;
   int alignment_max_conservative;
   int alignment_current;
   int influence;
};

...



class FactionMember
{
public:
   char Name[CREATURE_NAMELEN];
   int alive;
   int gender;
   int competence;
   int stylemoviegenre;
};

class Faction
{
public:
   char AbbreviatedName[CREATURE_NAMELEN];
   char FullName[CREATURE_NAMELEN];
   int FriendList[FACTIONALLIANCENUM];
   int NeutralList[FACTIONALLIANCENUM];
   int EnemyList[FACTIONALLIANCENUM];
   int FactionAlignments[FACTIONALIGNNUM];
   
   int RelevantLaws[LAWNUM];
   int MaxGovernmentLiberalLaws[LAWNUM];
   int MaxGovernmentConservativeLaws[LAWNUM];
   int RelevantViews[VIEWNUM];
   int RelevantLocations[SITENUM];
   int RelevantCrimes[LAWFLAGNUM];
   int RelevantGenres[GENRENUM];
   int RelevantProtagonists[VIEWNUM];
   int RelevantSettings[VIEWNUM];
   int RelevantClubs[ACTIVITYNUM];
   
   int healthmax;
   int healthcurrent;
   int governmentfunded; //1 for yes, 0 for no
   int moviefunded; //-2 for conservative or Stalinist; -1 for conservative; 0 for no; 1 for liberal; 2 for liberal or Stalinist
   int privatefunded; //1 for yes, 0 for no
   int fundscurrent;
   int basestrength;
   int fundingrelevance;
   int baseaggressiveness;
   
   vector<FactionMember *> Members;
};



in saveload.c:
Code: [Select]
      //Lobbies
      int lobbynumber = lobbies.size();
      fwrite(&lobbynumber, sizeof(int), 1, h);
      for (int l = 0; l < lobbynumber; l++)
      {
         fwrite(&lobbies[l]->LobbyName, sizeof(char), CREATURE_NAMELEN, h);
         fwrite(&lobbies[l]->LobbyCreatures, sizeof(int), CREATURENUM, h);
         fwrite(&lobbies[l]->LobbyLaws, sizeof(int), LAWNUM, h);
         fwrite(&lobbies[l]->spectrum, sizeof(int), 1, h);
         fwrite(&lobbies[l]->alignment_max_liberal, sizeof(int), 1, h);
         fwrite(&lobbies[l]->alignment_max_conservative, sizeof(int), 1, h);
         fwrite(&lobbies[l]->alignment_current, sizeof(int), 1, h);
         fwrite(&lobbies[l]->influence, sizeof(int), 1, h);
      }
     
      //Factions
      fwrite(&global_violence_counter, sizeof(int), 1, h); //Number of violent events in the news related to politics
      int factiontotal = factionlist.size();
      fwrite(&factiontotal, sizeof(int), 1, h); //Number of factions
      for (int f = 0; f < factiontotal; f++)
      {
         fwrite(&factionlist[f]->AbbreviatedName, sizeof(char), CREATURE_NAMELEN, h);
         fwrite(&factionlist[f]->FullName, sizeof(char), CREATURE_NAMELEN, h);
         fwrite(&factionlist[f]->FriendList, sizeof(int), FACTIONALLIANCENUM, h);
         fwrite(&factionlist[f]->NeutralList, sizeof(int), FACTIONALLIANCENUM, h);
         fwrite(&factionlist[f]->EnemyList, sizeof(int), FACTIONALLIANCENUM, h);
         fwrite(&factionlist[f]->FactionAlignments, sizeof(int), FACTIONALIGNNUM, h);
         fwrite(&factionlist[f]->RelevantLaws, sizeof(int), LAWNUM, h);
         fwrite(&factionlist[f]->MaxGovernmentLiberalLaws, sizeof(int), LAWNUM, h);
         fwrite(&factionlist[f]->MaxGovernmentConservativeLaws, sizeof(int), LAWNUM, h);
         fwrite(&factionlist[f]->RelevantViews, sizeof(int), VIEWNUM, h);
         fwrite(&factionlist[f]->RelevantLocations, sizeof(int), SITENUM, h);
         fwrite(&factionlist[f]->RelevantCrimes, sizeof(int), LAWFLAGNUM, h);
         fwrite(&factionlist[f]->RelevantGenres, sizeof(int), GENRENUM, h);
         fwrite(&factionlist[f]->RelevantProtagonists, sizeof(int), VIEWNUM, h);
         fwrite(&factionlist[f]->RelevantSettings, sizeof(int), VIEWNUM, h);
         fwrite(&factionlist[f]->RelevantClubs, sizeof(int), ACTIVITYNUM, h);
         
         fwrite(&factionlist[f]->healthmax, sizeof(int), 1, h);
         fwrite(&factionlist[f]->healthcurrent, sizeof(int), 1, h);
         fwrite(&factionlist[f]->governmentfunded, sizeof(int), 1, h);
         fwrite(&factionlist[f]->moviefunded, sizeof(int), 1, h);
         fwrite(&factionlist[f]->privatefunded, sizeof(int), 1, h);
         fwrite(&factionlist[f]->fundscurrent, sizeof(int), 1, h);
         fwrite(&factionlist[f]->basestrength, sizeof(int), 1, h);
         fwrite(&factionlist[f]->fundingrelevance, sizeof(int), 1, h);
         fwrite(&factionlist[f]->baseaggressiveness, sizeof(int), 1, h);
         
         int factionmembers = factionlist[f]->Members.size();
         fwrite(&factionmembers, sizeof(int), 1, h);
         for (int m = 0; m < factionmembers; m++)
         {
            fwrite(&factionlist[f]->Members[m]->Name, sizeof(char), CREATURE_NAMELEN, h);
            fwrite(&factionlist[f]->Members[m]->gender, sizeof(int), 1, h);
            fwrite(&factionlist[f]->Members[m]->competence, sizeof(int), 1, h);
            fwrite(&factionlist[f]->Members[m]->stylemoviegenre, sizeof(int), 1, h);
         }
      }
     
      ...


      //Lobbies
      fread(&dummy, sizeof(int), 1, h);
      lobbies.resize(dummy);
      for (int l = 0; l < len(lobbies); l++)
      {
         lobbies[l] = new Lobby;
         
         fread(&lobbies[l]->LobbyName, sizeof(char), CREATURE_NAMELEN, h);
         fread(&lobbies[l]->LobbyCreatures, sizeof(int), CREATURENUM, h);
         fread(&lobbies[l]->LobbyLaws, sizeof(int), LAWNUM, h);
         fread(&lobbies[l]->spectrum, sizeof(int), 1, h);
         fread(&lobbies[l]->alignment_max_liberal, sizeof(int), 1, h);
         fread(&lobbies[l]->alignment_max_conservative, sizeof(int), 1, h);
         fread(&lobbies[l]->alignment_current, sizeof(int), 1, h);
         fread(&lobbies[l]->influence, sizeof(int), 1, h);
      }
     
      //Factions
      fread(&global_violence_counter, sizeof(int), 1, h); //global violence counter
      fread(&dummy, sizeof(int), 1, h); //Number of factions
      factionlist.resize(dummy);
      for (int f = 0; f < len(factionlist); f++)
      {
         factionlist[f] = new Faction;

         fread(&factionlist[f]->AbbreviatedName, sizeof(char), CREATURE_NAMELEN, h);
         fread(&factionlist[f]->FullName, sizeof(char), CREATURE_NAMELEN, h);
         fread(&factionlist[f]->FriendList, sizeof(int), FACTIONALLIANCENUM, h);
         fread(&factionlist[f]->NeutralList, sizeof(int), FACTIONALLIANCENUM, h);
         fread(&factionlist[f]->EnemyList, sizeof(int), FACTIONALLIANCENUM, h);
         fread(&factionlist[f]->FactionAlignments, sizeof(int), FACTIONALIGNNUM, h);
         fread(&factionlist[f]->RelevantLaws, sizeof(int), LAWNUM, h);
         fread(&factionlist[f]->MaxGovernmentLiberalLaws, sizeof(int), LAWNUM, h);
         fread(&factionlist[f]->MaxGovernmentConservativeLaws, sizeof(int), LAWNUM, h);
         fread(&factionlist[f]->RelevantViews, sizeof(int), VIEWNUM, h);
         fread(&factionlist[f]->RelevantLocations, sizeof(int), SITENUM, h);
         fread(&factionlist[f]->RelevantCrimes, sizeof(int), LAWFLAGNUM, h);
         fread(&factionlist[f]->RelevantGenres, sizeof(int), GENRENUM, h);
         fread(&factionlist[f]->RelevantProtagonists, sizeof(int), VIEWNUM, h);
         fread(&factionlist[f]->RelevantSettings, sizeof(int), VIEWNUM, h);
         fread(&factionlist[f]->RelevantClubs, sizeof(int), ACTIVITYNUM, h);
         
         fread(&factionlist[f]->healthmax, sizeof(int), 1, h);
         fread(&factionlist[f]->healthcurrent, sizeof(int), 1, h);
         fread(&factionlist[f]->governmentfunded, sizeof(int), 1, h);
         fread(&factionlist[f]->moviefunded, sizeof(int), 1, h);
         fread(&factionlist[f]->privatefunded, sizeof(int), 1, h);
         fread(&factionlist[f]->fundscurrent, sizeof(int), 1, h);
         fread(&factionlist[f]->basestrength, sizeof(int), 1, h);
         fread(&factionlist[f]->fundingrelevance, sizeof(int), 1, h);
         fread(&factionlist[f]->baseaggressiveness, sizeof(int), 1, h);
         
         fread(&dummy, sizeof(int), 1, h); //faction members
         factionlist[f]->Members.resize(dummy);
         for (int m = 0; m < factionlist[f]->Members.size(); m++)
         {
            fread(&factionlist[f]->Members[m]->Name, sizeof(char), CREATURE_NAMELEN, h);
            fread(&factionlist[f]->Members[m]->gender, sizeof(int), 1, h);
            fread(&factionlist[f]->Members[m]->competence, sizeof(int), 1, h);
            fread(&factionlist[f]->Members[m]->stylemoviegenre, sizeof(int), 1, h);
         }
      }
« Last Edit: April 05, 2018, 10:36:09 pm by SlatersQuest »
Logged

SlatersQuest

  • Bay Watcher
    • View Profile
Re: Terra Vitae Mod (version 1.4 released!)
« Reply #614 on: April 05, 2018, 10:33:15 pm »

Edit: no I don't see it. What is going on here?
Logged
Pages: 1 ... 39 40 [41] 42 43 ... 57