You are viewing a potentially older version of this package. View all versions.
ChaseCraig-Artifact_Modifact-1.5.3 icon

Artifact Modifact

Modifies bits of the game so that way you can have a lot of control how it functions!

Date uploaded 6 years ago
Version 1.5.3
Download link ChaseCraig-Artifact_Modifact-1.5.3.zip
Downloads 299
Dependency string ChaseCraig-Artifact_Modifact-1.5.3

This mod requires the following mods to function

bbepis-BepInExPack-3.2.0 icon
bbepis-BepInExPack

Unified BepInEx all-in-one modding pack - plugin framework, detour library

Preferred version: 3.2.0
tristanmcpherson-R2API-2.4.10 icon
tristanmcpherson-R2API

A modding API for Risk of Rain 2

Preferred version: 2.4.10

README

ArtifactModifact

By Mylifefighter aka CMC-Theories aka ChaseCraig

NOW WITH 100% MORE SPAWNS!

A mod that allows for customizing your risk of rain experience.

  • Did you want to change what could drop from an enemy when using the Sacrifice Artifact? Well now you can change the drop rates of the various tiers of items.

  • Did you want to change how often things drop from enemies when using the Sacrifice Artifact? Well now you can!

  • Did you not want to have a boring old function for a drop rate? Well now you can spice it up with your very own custom drop function! (Limited to the processing capability of your system)

  • Did you ever feel that only having 1 Aurelionite was just too boring? Well now you can change how many spawn on the teleporter event!

  • Did you ever feel that the queen guard and the aurelionite are boring without items? Well now you can have it add random items to them to spice things up! (Planned: copy items, copy some items)

  • Did you ever... (I'm kidding, this hurts you and me, see below for full details)

Please contact Mylifefighter#8823 on Discord if you find any issues besides known bugs.

Installation

  1. Install BepInEx Mod Pack
  2. Install R2API
  3. Download the latest RoROverhaul.dll here
  4. Move the RoROverhaul.dll to your \BepInEx\plugins folder

Configuration

  1. Launch the game once with the mod installed then close it down to generate the configuration files.
  2. Go to \BepInEx\config\RoROverhaul and open mylifefighter.sacrificeart.xxxx.cfg, where xxxx is the part of the mod you wish to edit.

Available Customization

  • Aurelionite and Beetle Guard Allies can spawn with x random items, y hp boosts and z damage boosts.

  • Sacrifice artifact has drop chance, and white/green/red/blue/orange tier drop chance settings.

  • Command artifact has been hooked into and is currently twiddling its thumbs

  • Swarm artifact can influence how many enemies spawn for every 1 original spawn, what is the exp/gold/hp cut/multiplier and damage multipler (DAMAGE MODIFIER IS LIVE!!!!!!).

  • Vengence artifact (Doppelganger!!! :O ) can now be modified to control anything from % of items to percentage randomized to damage,hp,exp,gold cuts (Oh and you can control how many, it is fun to see 20 of them coming at you with like 6 hp :P)

  • Spite artifact (BOMBS) can now be modified to control blast range, amount, etc.

  • New helper file to store all the information about using the custom functions!!

Custom function guide

This mod features usage of my custom function generator, this allows for you to take various parameters and combine them to a single float value.

A typical function looks like this: 0 - 5 * x / LOG((10.5 + t) / cd)(2)

The only unique things are as follows: You must be explicit when writing negative numbers (so -x is written as 0 - x), and comma's don't exist, so to do multi-parameter functions you use 2 parenthesis statements, oh and be explicit with multiplication.

Available functions are:

  • Round(x), Floor(x), Ceil(x), Log(x)(base), Abs(x), Min(x)(y), Max(x)(y), Rand(low)(high), Neg(x)

  • +, -, *, /, ^

FAQ

Q: How do I change the drop chance on the sacrifice artifact?

A: NOW AN EASY ONE STEP PROCESS! Go to the sacrifice config file, open it up and look for the field "DropChance", then enter the function that you want! If you want a constant chance (say a 20 on a d20), put in 5%, if you want something fancy like starts at a low percent but then ramps up as time goes on, use something like 20 + 80*(1.0 - exp(0.0 - (t / 1200))).

Q: Help, 0,0 does not register correctly with your mod!

A: If your globalization settings for your machine does not match what you put in, the script will freak out. Using the "invariant culture" representation of numbers should also work (like 0.0).

Q: How does DmgBoost differ from DmgCut?

A: Sadly I am hooking into the recalculation of stats at the end of the computation, so I don't see everything else. So it is calculated on the total damage output for the cut.

Q: Everything is on fire and nothing is working/My friend is crashing/...?

A: Firstly, make sure that my mod (and R2API and BepInEx) are the only mod(s) installed. Then see if you can replicate the issue. Like I said my mod won't probably play well with other mods. If it still occurs please let me know (with the appropriate log file).

Q: Why can I crash my game by using a 200x spawn ratio for the swarm artifact/Spawn 100 Aurelionite/queens guards?

A: Yes!

Q: What items are in the pool of random items to give to the allies?

A: Whatever is available to spawn in the game, including lunar and boss items (yes...a beetle guard with a gland will spawn an allied beetle guard).

Q: What do the values mean for the tier chances in the sacrifice file?

A: The system works like a lottery, basically everything throws in a positive number of tickets into a pot, then every time it needs an item it draws from the pot and determines what you get. So if tier1 is 9 times more than tier2, then theoretically out of every 10 drops, 9 of them should be tier1 and the remaining should be tier2 (excluding the other tiers).

Q: Does this mean I can do an all white/green/red/blue/yellow run?

A: Yes, just remember to set the other values to 0.0, yes 0.0 is a function, a boring one, but a function none-the-less.

Q: Damage cut on swarm?

A: I will need to figure out a way to implement it, otherwise it doesn't exist and that field just doesn't do anything.

Q: Known bugs?

A: Yes, setting the swarm multiplier to 50 will bring my system to 1 FPS; I am pretty sure that my mod does not play nicely with other mods (item stats doesn't know that I am screwing with the spawning of Aurelionite...but I might be able to figure out how to fix that); I am 99.999% sure that you can break the function mod, so please don't, it only runs on the hosts computer from the host; Yes you can get float.infinity, don't do it.

Q: Command artifact seems unchanged yet you hooked into it?

A: Yes! I did that initially but then I realized there was nothing that I wanted to change...so yes, I have a useless hook.

Q: And your code is...

A: Messy, but that is because I am needing to refactor most of the code. Will do that soon :)

Q: This starts at v1.3.3.1?

A: I didn't think I would actually make it this far.

Planned updates

  • Redo my enemy spawning script as I want to config it but I break so much by touching it

  • Hook into all enemies to give them the options

  • Hook into all allies to give them the options

  • Make this mod play nicer with other mods Hahahahahahahhahahahahahahhahaha, not happening any time soon :(

  • Modify the bomb artifact/the doppleganger artifact/etc. VENGENCE AND SPITE ADDED!!!

  • Make it so that other bosses can be substituted in instead of Aurelionite for boss allies

  • Make it so that other types of enemies can be substituted in instead of beetle guards

  • Somehow compile the function code to speed up execution time

Known Bugs

  • I use HarmonyAPI, I use prefix, and I do return false.

  • Aurelionite will occasionally spawn in a pair of 2...but ***I think it was solved ***

  • Monsters won't spawn during the game phases (or bosses during boss phases o-o), this is due to a bug where I would request that it would spawn more enemies, so only the most "expensive" mob would spawn, but that would take forever for it to build enough "credit" for it to spawn, (yeah it was fun to test/see like after 2 minutes waiting outside the teleporter to see a wandering vagrant to spawn) Should be fixed

Changelog

v1.5.3

  • Now with 100% more Microsoft.CSharp.dll AND MiniRpcLib.dll. (Required...for reasons???? Idk it fixed it so it stays).
  • Now with 100% more mob spawning! (Con: I removed EVERYTHING regarding the spawning of enemies, so no config there :( )
  • (Dev Note) Rebuilt my solution from scratch, thank you to iDeathHD for pointed me to a working project with Microsoft.CSharp.dll.

v1.5.2

  • Now with 100% less Microsoft.CSharp.dll! (I was trying to implement something, this DLL is free to download and use, it got into my distro via automated processes, at least it wasn't the game files! This actually might return, but maybe in an embedded manner.

v1.5.1

  • CORRECTLY MADE IT SO SACRIFICE SPAWNS EVERYTHING (Gosh darn Command Artifact hooks polluted the previous spawn cards >:( )
  • Suprisingly, that fixed like 99% of things I know of.

v1.5.0

  • Command artifact now actually has a use, it provides armor when in the menu! Configurable amounts too :)
  • Added in controls for how objects spawn in the game. If you want 20 scavenger bags to spawn randomly you can do that in configs!
  • Sacrifice artifact no longer removes alters and drones, UNLESS YOU WANT TO (in the configs, you can even whitelist chests again XD)
  • Some other things I forgot T_T

v1.4.1

  • Whoops! I accidently made it so the default value for Sacrifice was 0! Fixed so drops happen again!
  • I had a math error with my random generation function. Apparently I should test random algorithms from the internet before pushing (it was a draw without replacement (resevoir algorithm)).
  • I need sleep :)

v1.4.0

  • CutDamage added for options!!
  • Added Vengence and Spite artifacts

v1.3.4

  • Silenced even more debugging
  • Added an icon...not a good one...but an icon none-the-less...

v1.3.3.1

  • Added configuration options to a seperate folder since there will be multiple files.
  • Fixed swarm not properly hooking
  • Debug.Silence(SwarmArtifact)
  • Started Git repository