- Enemy.ModifyBehaviour now allows for completly replacing the values of
aiScript
andlogicController_SO
- Bad method signature in register content hook
- RL2.API now requires RL2.ModLoader v1.0.3
- This is due to the fact that v1.0.3 introduced proper IDs for its Hook objects
Mod.ModManifest
property- Holds the
ModManifest
object related to the mod
- Holds the
RL2API.GetModInstance(string modName)
method- Returns an instance of a mod with
modName
set as its name in its manifest, ornull
if not found
- Returns an instance of a mod with
- Mods can now specify which classes implementing
IRegistrable
belong to which mod- This is important in case one assembly contains multiple mods
- Instead of subclassing ModX and GlobalX classes, modders should now create their own classes implementing the
IRegistrable
interface. - Inside the
IRegistrable.Register()
method of their classes, they should subscribe to events such asPlayer.OnKill
where their code will be executed
-
Player related APIs
-
ModPlayer.OnSpawn
override changed toPlayer.OnSpawn += (PlayerController player) => { }
-
ModPlayer.PreKill
override changed toPlayer.PreKill += (PlayerController player, GameObject killer) => { return (bool)IfPlayerShouldDie; }
-
ModPlayer.OnKill
override changed toPlayer.OnKill += (PlayerController player, GameObject killer) => { }
-
Player stat modification procedurue changed. Instead of changing Player.StatBonuses.{StatName}, modders should use
Player.Stats.{StatName}Flat += (ref int/float additive) => { }
for additive bonuses, and
Player.Stats.{StatName}Multiplier += (ref float multiplier) => { }
for stat scaling bonuses. Modify the passed in parameters to grant these bonuses
-
ModSystem.ModifyGeneratedCharacterData
override changed toPlayer.HeirGeneration.ModifyCharacterData += (CharacterData data, bool classLocked, bool spellLocked) => { }
-
ModSystem.ModifyGeneratedCharacterLook
override changed toPlayer.HeirGeneration.ModifyCharacterLook += (PlayerLookController lookData, CharacterData data) => { }
-
ModSystem.ModifyCharacterRandomization
override changed toPlayer.HeirGeneration.ModifyCharacterRandomization += (CharacterData data) => { }
-
ModSystem.ModifyAbilityData
override changed toPlayer.Ability.ModifyData += (AbilityType type, AbilityData data) => { }
-
-
Enemy related APIs
-
GlobalEnemy.OnSpawn
override changed toEnemy.OnSpawn += (EnemyController enemy) => { }
-
GlobalEnemy.PreKill
override changed toEnemy.PreKill += (EnemyController enemy, GameObject killer) => { return (bool)IfEnemyShouldDie; }
-
GlobalEnemy.OnKill
override changed toEnemy.OnKill += (EnemyController enemy, GameObject killer) => { }
-
ModSystem.ModifyEnemyData
override changed toEnemy.ModifyData += (EnemyType type, EnemyRank rank, EnemyData data) => { }
-
ModSystem.ModifyenemyBehaviour
override changed toEnemy.ModifyBehaviour += (EnemyType type, EnemyRank rank, BaseAIScript aiScript, LogicController_SO logicController_SO) => { }
-
-
Map related APIs
ModSystem.ModifyRoomIcon
override changed toWorld.Map.ModifyRoomIcon += (GridPointManager roomToCheck, bool getUsed, bool isMergeRoom) => { }
- ModClassData
- Awaits new implemenataion, doesn't work at the moment
- StatBonuses.(Strength|StrengthMultiplier|Intelligence|IntelligenceMultilplier) no longer apply to enemies
- RL2.API no longer tries to load mods that don't specify being loaded after it
new-mod
command is now called viarl2.api:new-mod
- ModSystem.ModifyAbilityData:
- Allows modifying AbilityData depending on the provided AbilityType
- ModSystem.ModifyEnemyData:
- Allows modifying EnemyData depending on the provided EnemyType and EnemyRank
- ModSystem.ModifyEnemyBehaviour:
- Allows modifying the enemy AI script and logic controller depending on the provided EnemyType and EnemyRank (needs detailed documentation)