Jump to content
OpenRCT2

X7123M3-256

Members
  • Content Count

    755
  • Joined

  • Last visited

Posts posted by X7123M3-256


  1. Found the relevant code. It seems that only angry peeps vandalize, and only when there is no security guard within 7 tiles of the peep. The sprite that is shown in the window is decided here - the angry face is shown if var_F3 is nonzero. var_F3 is set to 16 when the peep vandalizes a path object, and decreases by 1 on each update until it is back to zero. I am not sure if this unsets the angry flag or not.

    So it seems that the red face is shown only once a peep has actually vandalized an object - angry peeps that have not yet vandalized (or have gone long enough without vandalizing) are not visibly angry. Also interesting is that naming a peep "Eilidh Bell" will instantly make them angry.


  2. 3 hours ago, jensj12 said:

    Same goes for the EIN-ratings, if they are not what you want them to be, build a different coaster.

    Hacked rides often mess with the E/I/N ratings and while they are ultimately inconsequential I wouldn't mind having the option to tune it manually. For example, train length factors into excitement rating, so when playing with long trains you can easily get 11+ excitement which is absurd. Also,rating calculation is different for every track type, so putting a train on a different track type from the one it was designed for will often result in an excitement rating that's too high or too low. Worse, while individual objects can increase ratings beyond the hardcoded base, you can't decrease them, so if you make a ride based on giga coaster track the excitement will probably come out higher than you'd like, even without the use of cheats.

    I think the best way to deal with this problem would be to make it possible to adjust ratings down as well as up in the object file, rather than on a per-ride basis, but I don't think this can be done easily without a new object file format. I'm not sure how easy it would be to implement as a cheat, either, and I don't think it's particularly important, but if it was there, I'd probably use it.

    • Like 1

  3. I mean, you're not going to get a new Arrow looper today (a relocated one maybe), so most installations are getting old now, and technology has moved on.  It was just meant as an example of an old ride style - I didn't mean to say "guests should not want to ride Arrow loopers". 

    I think rides should get less popular with time - people do get bored of rides they've ridden many times before (at least I do), and new rides attract people to the park (otherwise parks wouldn't build them). Without this mechanic, there'd be no incentive to keep expanding the park.


  4. 44 minutes ago, KKLD said:

    multiplayer versionchanged to 4 so it should 'work' with current clients.

    Please be careful with this. The game state may not be deserialized correctly because my version expects an extra byte for the status of the new cheat, which won't be sent by servers running the develop build. Also, without the patch you're limited to 16 cars, and setting more than that will corrupt the memory of other clients. Even if it appears to work, I would recommend against it - it can have all sorts of side effects because you are overwriting memory that is being used for other things. I had various weird bugs occur during testing as a result of this memory corruption - car sprites being drawn where they shouldn't be, menu items being populated with random text, and at one point it thought my coaster was a sign. I am not sure whether this could actually crash the server or other clients - I suspect it could but I'm reluctant to try it.

    • Like 1

  5. I am currently working on a cheat to do this. Another option, which I have used in the past, is to modify the DAT file to set the minimum car length to the length you want - this overrides all other limits on the train length. However, the fact that the train length displayed in the window remains unchanged suggests neither method was used here. 8Cars has a similar feature, it's possible that the train length was hacked in 8Cars, and then the resulting savegame loaded in OpenRCT2. It is also theoretically possible to do something like this by directly editing the game's memory (which is essentially what 8Cars does), but I'm not sure how easy this would be.

    In the vanilla game and current versions of OpenRCT2, there is an absolute limit of 16 cars and setting a length longer than that can result in undefined behaviour/possible crashes. My cheat increases this limit to 255 cars, which I believe is as far as you can go without having to modify the save format.

     

    Also see this other discussion on the topic


  6. 7 hours ago, theannihilator9807 said:

    I think it would be good if we could have RCT 2 style and RCT 1 style go karts that way we can have both

    There's no need for any changes to OpenRCT2 to implement this - just take the sprites from csg1.dat and create a new DAT file from them (if somebody hasn't done it already, a number of RCT1 rides have been ported). The only tricky part is that the sprites aren't always in the same order, but the go karts don't have many sprites so you can just manually rearrange them if necessary.


  7. This error means you're missing an object file. PTCT2R is a default object (the 6 seater reversed wooden coaster trains), so either you accidentally deleted it or something is wrong with your RCT2 install. You might have to try reinstalling the game. Is that the only file that's missing, or are you getting other missing object errors (the complete list of missing objects should be printed to the terminal).


  8. Oh,  sorry, I thought you were asking for OpenRCT2 to be able to load RCT1 resource files directly, which would be difficult.

    Extracting the RCT1 sprites and turning them into an RCT2 object file is easy - I already did it for the RCT1 mini suspended coaster, and I've seen it done for a couple of other RCT1 rides as well. There is no reason not to do it if that's what you want - it does not require any alteration to the code nor introduce an incompatibility with the vanilla game.


  9. RCT1 doesn't have object .DATs so you can't easily patch in support for loading RCT1 rides. You can't easlily use the RCT1 base graphics in place of the RCT2 base graphics either, because they don't have the same sprites. I think the best option is to extract the go-kart sprites from csg1.dat and repackage them as an object file for RCT2. This doesn't require any changes to the code - it would still work in vanilla. If you then want to replace the existing go-karts with the RCT1 version, you could substitute KART1.DAT with the new file (you have to make sure that the object header is the same though, or the game won't recognize it). If you want to have the RCT1 go karts alongside the standard ones, just give it a different name.


  10. 64 does seem to be the limit of the dropdown menu, any more than that causes problems, and I know that the vehicle selection dropdown is limited to 64 items as well. To get 255, I just modified the code to ignore the dropdown and always set the train length to 255. Obviously this is not very practical so I've now changed it back to 64 - I put it up that high partly to see how far it can go, but also to try and detect any remaining buffer overflows (adding this many cars to an array sized for 16 will surely break something, right?).

    • Like 1

  11. Just now, KKLD said:

    I can't help but wonder why the initial limit was set to 16 and why changing it to 32 should fix it.

     

    In the ride_entry struct, they're 8 bit values. But during the calculation of the max train length, those two values get copied into a single 8 bit variable, which gives 4 bits each for a maximum of 15. I think that's the issue here, but janisozaur is the better person to answer becasue he implemented the fix.

     

    Just now, KKLD said:

    The Log Flumes, Splash Boats, Car Ride and some other rides support 31 boats/cars.

     

    The number of trains and the number of cars per train are not the same thing. All those rides are limited to individual cars.

     

    Just now, KKLD said:

    And talking about a cheat to enable longer cars; is the only thing required to disable these 4 checks?

    As far as I can tell, yes. This doesn't look like a difficult thing to implement, but it's hard to be sure until I've tried it - I don't know the codebase as well as the developers do.


  12. I'm getting a merge conflict, which I think is because I have local changes (I was messing with the track code again). I've tried running git reset --hard and then pulling the latest version, but it still doesn't work. Is there a way to reset everything back to the current version of the code?


  13. I set the minimum and maximum train length field to 30. That's all there is to it. An interesting thing is that the game doesn't validate train lengths on load, so you can tweak the DAT, build a ride with absurdly long trains, then restore the original DAT and still load your park - as long as you don't close and reopen the ride, you keep your long trains. Same for friction values - I've thought about implementing it as a cheat to cut out the need to change DAT files entirely.

    I retested the 30 car trains and they crash now, so something's changed, but possibly not in this part of the code. The 15 car versions still work, so I'm not sure what the new limit is but given that it's getting packed into a 4 bit value at one point I assume it's just coincidence that 30 cars worked before. I'll have to investigate a bit more to see what the root cause of the crash is.


  14. The game takes into account 3 things when determining how long the trains can be, in this order:

    • The max train length set in the file
    • The total friction of all the cars on the track
    • The length of the station
    • The minimum train length

    The relevant code is here. The key point is that the minimum train length is the last thing calculated, so if the minimum train length is set to 30 then the trains have to be at least that long, even though the game won't allow a station long enough to accomodate them. Strangely, looking through that code again I see that the min and max train lengths are packed into a single 8 bit value with 4 bits each, so I'm not quite sure why a value of 30 worked - has that changed since I did this?


  15. It works fine for me in OpenRCT2 (I haven't even tested in vanilla), but make it one car longer and it crashes. I have not yet looked into why it crashes. It is definitely possible to implement a "remove train length limits" cheat, and I might look into doing that, along with an option to change the friction value used for the ride. The method I use for this at the moment involves making a new .DAT file, but the change need not be permanent - you can restore the original limit and the cars already on the circuit will not be shortened.

×
×
  • Create New...