DeadCore mods/addons - proof of concept (hopefully)
8 years ago
New South Wales, Australia

So I've been poking around inside DeadCore for the past few weeks and I've managed to start making changes to the scripts that the game attaches to certain objects, for example, as an experiment I've added the following line into the base EnemyScript that all enemies (except for leaderless Mosquitoes) in the game are derived from

Object.Destroy(base.gameObject);

And the result, a much quieter neighbourhood: http://steamcommunity.com/sharedfiles/filedetails/?id=524773634

So if I manage to remove calls to the steam achievements and times being posted to 5 Bits servers when using this, would anyone have an interest in this?

My current goal is to add another tab in the settings menu and have a bindable key for restarting the level and a button that removes all story progress, the actual method for this already exists inside the GameManager script that makes calls to the SaveManager but for some reason it's not included in any of the UI's in the game.

Tewi_TV likes this
Canada

Levels without enemies are interesting, but I don't think I would use that for anything.

Resetting story progress without restarting the game, though... now that would be handy.

New South Wales, Australia

Well we have some small progress made, at the current stage I've no idea how to modify the menu UI's (Not sure if this will be possible since I think the actual elements on the UI are created in the unity scene and not the C# scripts) so can't really make things dynamic or re-bindable at this point, however I do have it working that F1 restarts current level and if you press F12 during a run it will reset your save progress the next time you go to the main menu or restart the level, currently trying to bind this to a key press when you're at the main menu but with no luck just yet.

New South Wales, Australia

Next best thing, hijacked the "Restart Cycle" button in the Story Menu, this now resets save and then starts the story mode.

http://steamcommunity.com/profiles/76561198005336843/screenshot/419189600169706366

United Kingdom

About the "Restart Cycle", you couldn't make it so that "Restart Level" deletes the save file + restarts to level 1 instead could you?

I only ask this since people that may run NG+ need Restart Cycle in order to restart their runs.

Cool stuff nonetheless.

New South Wales, Australia

Yeah that's doable, keep the restart current level method bound to F1 and replace the "Restart Level" button in the pause menu with restart cycle, I'll quickly do that and then maybe upload what I have to see what you think, only tested on my system so far, it should work on any system that can run DeadCore but not 100% sure.

New South Wales, Australia

On second thoughts, can actually just set it up so hitting the cancel button on the save reset will just do the standard NG+ cycle reset.

New South Wales, Australia

Summary of changes made:

  • Pressing F1 during a level will restart the current level. (Does the same thing as the "Restart Level" button on the pause menu, but less waiting)
  • The "Restart Level" button on the Story Main Menu now acts as an NG reset that will reset your save data and restart the story mode.
  • The "Restart Cycle" button still does the same thing (restarts story mode but not save data), just changed the text to better reflect what it does.
  • Removed the Splash screen from the start of the game (Bandai Namco / 5 Bits Games)

Installation:

  1. Download the correct dll file from one of the links below Windows Library Linux Library

  2. Navigate to [DeadCore Install Directory]/DeadCore_Data/Managed

  3. Make a copy of Assembly-CSharp.dll (Revert back to this one if you're stuck at a black screen after starting the game)

  4. Move the dll you downloaded from one of the links above into the Managed directory and rename the file so it's 'Assembly-CSharp.dll'

  5. Start the game (Maybe consider making a backup of your story.save file if you want to revert back to it sometime in the future)

Should probably also mention that the original file and the changes were made on a Windows system, and I haven't been able to look at the files in a DeadCore Linux install, so not sure if it will work for Linux.

New South Wales, Australia

If anyone tries this can they tell me if it works on their system, and if it doesn't can they somehow upload a copy of their original Assembly-CSharp.dll and tell me what OS they run, the Assembly-CSharp.dll contains all of the Unity C# scripts needed for the game to run, it should be platform independent as far as I know but not sure.

United Kingdom

Confirmed working on Windows 7, 64-bit.

Fantastic work. Seeing as you're familiar with this kind of stuff, shot in the dark here but is there a way to remove/disable the unskippable intro videos or otherwise make them skippable? As in the 5bitsgames and Bandai Namco intro videos.

Thanks again for this great work, Standalone.

New South Wales, Australia

Sweet, thanks for the feedback and confirmation that it works, that's my next little goal at this point, was going to have a look at doing that before uploading it here, but 3am now so I think I'll leave it for the morning.

New Zealand

Thanks for the mod Standalone, really handy! I tried it out under Debian Linux, and it seems to work as intended, but with a few issues. Firstly, dashing produces a weird visual effect - the screen gets darker, with occasional flickers: 1, 2. The color seems to be related to the level, it looks like this on level 3. Also, the game seems to take longer to exit. The menu drops out, but the background stays there for a little while before it closes. Pretty bizarre that it would cause either of these things, but it definitely goes away when I replace it with the original DLL. I don't get anything on stdout or stderr when running Steam from the terminal. Here's the Linux version of the DLL. Happy to help with any testing you want me to do.

New South Wales, Australia

Hmm, I think I can see what's causing the weird dash blur interactions, definitely some minor differences between the Windows and Linux libraries, I'll put my changes into that Linux library you uploaded and then upload it here again and see if it works properly this time.

New South Wales, Australia

Ok, round 2, also removed the video splash screen from the start of the game in these ones.

Windows Library Linux Library

Windows library tested on my machine (Windows 8.1 - 64bit) and it works as intended, Linux library tested on Linux Debian and confirmed to work.

Same installation deal again, and also here's a quick txt file containing all the actual changes made to the dll's Changelog

New Zealand

Yep, that fixed both the issues I mentioned in my last post. Thanks!

New South Wales, Australia

Awesome, thanks for testing it and uploading the Linux library for me.

New South Wales, Australia

So here's something pretty cool that I finally got working, I think you can see where this is going.

Also for anyone interested, I figured out a way to write code for this and compile it (for the most part) with Visual Studio, you'll still need something like .NET Reflector and Reflexil to edit the Assembly-CSharp.dll to add a reference to your library that you create and to also put some method calls to your library where needed, but it will allow you to write code and compile in Visual Studio instead of having to manually create opcodes for everything with Reflexil.

France

Really nice ! I've tried to create a TAS external tool a while ago but didn't get something consistent, maybe I could do it as a "mod" now ^^ How did you manage to code with Visual Studio ? I never used Reflector / Reflexil and I can't find a way to add my own library :(

New Zealand

Very nice, having demos would be really useful. Do you plan to release the source for this at any point? I'm pretty busy right now, but I'll have plenty of time in about 3 weeks and I'd be keen to help out.

New Zealand

[quote]How did you manage to code with Visual Studio ? I never used Reflector / Reflexil and I can't find a way to add my own library[/quote]

I haven't used Reflexil so I don't know if it can just add assembly references directly, but one option that should work regardless would be to insert a call to one of the System.Reflection.Assembly methods to dynamically load your assembly.