You are viewing a potentially older version of this package. View all versions.
Alexandria-Alexandria-0.4.14 icon

Alexandria

A combination of old and new APIs, and new tools for the convenience of modders.

Date uploaded 3 weeks ago
Version 0.4.14
Download link Alexandria-Alexandria-0.4.14.zip
Downloads 1749
Dependency string Alexandria-Alexandria-0.4.14

This mod requires the following mods to function

MtG_API-Mod_the_Gungeon_API-1.9.1 icon
MtG_API-Mod_the_Gungeon_API

Adds the good parts of Mod the Gungeon to BepInEx.

Preferred version: 1.9.1

README

Alexandria is a library of useful code and various APIs with the intention of simplifying the mod creation process via it's use as a dependency.

Featured APIs


SoundAPI

  • For putting in sounds into the game, with custom switch state support.

cAPI

  • An API for making hats.
  • Idk someones gonna have to fill me in on this

CharacterAPI

An API for fully customizable custom characters, allowing features present in basegame characters such as:

  • Alternate skins
  • Alt weapons
  • Custom Pasts (You still have to make the Past yourself)
  • Glow / Emissive Shader support.
  • Custom Icons on character select screen.
  • Custom animations.
  • Prebaked Sprite Collection and Animation support.
  • Hegemony Credit Cost.
  • Custom Ghost Interaction
  • ..And more

DungeonAPI

An API used for loading and generating Custom Rooms made with Room Architect Tool.
Has tools for:

  • Override alt floor Master Rounds.
  • Loading custom room/s from embedded file or mod folder

Also contains a static list of nearly every gameobject used in rooms in the game in class "SetupExoticObjects".


EnemyAPI

Tools for making custom enemies, and other enemy related tools.
Includes:

  • EnemyBuilder
  • BossBuilder
  • EnemyBuildingTools (A class with misceallaneuous methods for enemy creation)
  • AIActorUtility (A class with misceallaneuous methods for enemy related stuff)
  • AttackBehaviourUtility (Helper class related to enemy behaviors)

ShopAPI

API for creating Shop-Type NPCs.
Allows for:

  • Custom Costs.
  • Custom dialogue
  • Minimap Icons
  • Price Multipliers
  • Rainbow Mode immunity
  • Modified Loot Table Selection
  • Appear with chance in the Main Shop.
  • Custom Item positions
  • ...And more.

PrefabAPI

Allows for creation of true custom prefabs.


ItemAPI

An API for the creation of custom items / guns.


TranslationAPI

An API for custom translations of modded text.


BreakableAPI

A collection of methods for creating various objects like debris, pots and other types of breakable decorative objects.


ChestAPI

WIP


LightAPI

An API for adding easy, customizable lights to various GameObjects, with special helpers for Guns and Projectiles.


Featured Misc. Tools

  • Assetbundle tools (creating custom stuff with prebaked sprite collections and animations.)
  • A static list of every enemies GUID for convenience.
  • Various helpful debug commands.
  • Custom Stat API (Need to actually look at how it works)
  • At least a dozen more related classes that are somewhat helpful

CHANGELOG

0.4.16

  • Fixed custom character registration breaking if fewer than 6 vanilla characters are unlocked
  • Fixed ignoreLichEyeBullets parameter not working for custom synergies
  • Fixed hat outline jankiness on some GPUs caused by hat outlines being misaligned with the pixel grid
  • Aggregated missing asset errors when loading rooms from external files
  • Automatically sorted list of hats passed to SetupHat()
  • Fixed hats always being set up from Alexandria's assembly rather than the assembly that actually made the hats ( oops ._. )
  • Updated required MtG API version to 1.9.1
  • Deprecated Alexandria's Translation API in favor of MtG API's Translation API

0.4.15

  • Added OnCustomProperty function to RoomFactory for plausible usage for custom properties on custom objects.
  • Added CustomDodgeRoll API (includes CustomDodgeRoll and CustomDodgeRollItem)
  • Optimized fake prefab instantiation
  • Obsoleted a bunch of methods that should never have been public

0.4.14

  • Fixed null deref caused by hats trying to get animator that hasn't been cached yet
  • Obsoleted a bunch of methods in NpcTools in favor of ToolsCharApi methods
  • Dramatically sped up atlas packing
  • Added several convenience function for setting up atlas / ui sprites from textures, sprite definitions, and resource paths

0.4.13

  • Fixed faulty refactor of collider setup code that caused some companions to get stuck in doorways
  • Fixed issue with CustomAmmoDisplay where some custom ammo labels would cause vanilla ammo labels to shift offscreen

0.4.12

  • Fixed faulty refactor of enemy and companion setup code preventing animations from playing correctly
  • Added CustomAmmoDisplay component

0.4.11

  • Fixed issue with beam sprites created from asset bundles set up offsets even when asked not to
  • Fixed (hopefully) rare issue with debris objects causing errors due to name conflicts with other debris prefabs
  • Optimized EnemyBuilder code a bit

0.4.10

  • Fixed an issue where Black Markets would not generate properly. (Thank you Spapi!)
  • (Mentioning this now to keep changelogs properly up to date) The brown chest lock issue has been fixed in 0.4.9
  • Removed Herobrine

0.4.9

  • Cleaned up and fixed a few bugs with beam setup code
  • Added GenerateAnchoredBeamPrefabBundle()

0.4.8

  • Added LightAPI
  • Optimized various bits of string setup, animation name lookup, and custom ammo clip initialization code

0.4.7

  • Never happened

0.4.6

  • Added RecalculateStatsWithoutRebuildingGunVolleys()
  • Enabled nice formatting for ILabelItem
  • Removed redundant 2nd call to FakePrefabHooks.Init() and cleaned up FakePrefab's Instantiate hook
  • Fixed custom shops not going out of stock on failed steal
  • Optimized and fixed a few issues with TrimGunSprites()
  • Optimized sprite lookup dictionary rebuilds in AddSpriteToCollection() variants

0.4.5

  • Minor back-end changes to Room Building.
  • Added Godrays and specific shrines to the exotic object list.
  • Added TextHelper with 1 method

0.4.4

  • cAPI bugfixes (Thank you Pretzel)
  • Updated changelog.
  • Removed 1000-THR "EARTHMOVER".

0.4.3

  • SoundAPI bugfixes

0.4.2

  • Added SoundAPI

0.4.1

  • Small fix for custom character punchout sprites.

0.4.0

  • Added cAPI.

0.3.35

  • Updated GunInt.SetupSprite and GunInt.SetupSpritePrebaked to allow for specific ammonomicon sprites to be set instead of using the given default sprite.

0.3.34

  • Added extra nullcheck somewhere.
  • Made all commands lowercase for ease of use.
  • Added new command "alexandria forceresetrun". Can you guess what it does? Some of you probably cant. (FOR USE IN CERTAIN SOFTLOCK SITUATIONS IF YOU COULD NOT TELL)

0.3.33

  • Added small failsafe in Room-building code.

0.3.32

  • Added fix for sawblades not inheriting speed and pause properties.

0.3.31

  • Fixed certain properties for RAT objects being rounded to a whole number value instead of being set to a floating point value like intended.

0.3.30

  • Fixed Golden Boss Pedestals placed with RAT having ghost items.

0.3.29

  • Hopefully fixed a bug relating to room objects using trigger events.
  • Added some framework for some new RAT features
  • If something breaks due to these changes please let Some Bunny know

0.3.28:

  • Moved some commands from Custom Rooms Mod into Alexandria, as they are more accessible from Alexandria.

  • New Commands:

  • alexandria checkCustomObjects

  • alexandria checkCustomPlaceables

  • alexandria checkStaticObjects

  • alexandria debugflow (Why wasn't this in the mod before.)

  • alexandria getpos

  • alexandria hidehitboxes

  • alexandria showhitboxes

  • alexandria spawnObject_Custom

  • alexandria spawnPlaceable_Custom

  • alexandria spawnStored_Object

  • Added summary for LoadRoomsFromRoomDirectory

  • Added descriptions for each command for the "help" command.

0.3.27

  • Changes some GunInt methods to actually work right because the old method doesn't work when I use it in Alexandria for some god forsaken reason. If anyone can somehow fix this be my guest.
  • Added some back-end for grass tile support.

0.3.26

  • Updated the other ResizeBetter action to Captain Pretzels optimized one

0.3.25

  • Optimized Resizing DFAtlas code thanks to Captain Pretzel
  • Added new method in GunInt class "SetupSpritePrebaked"

0.3.24

  • Fix for Ghost Blank Hook.

0.3.23

  • Added the extension method AddToGunslingKingTable to pickupobjects which adds the weapon to the possible gun rotation of the Gunsling King challenges.

0.3.20

  • EVEN. MORE!

0.3.19

  • It was not the last back-end change.

0.3.18

  • Hopefully the last back-end change I'll need to do

0.3.17

  • Some more back-end changes

0.3.16

  • Some back-end changes

0.3.15

  • oops

0.3.14

  • Hopefully fixed a gamebreaking bug when having Expand The Gungeon enabled at the same time.

0.3.13

  • Added major changes to Alexandrias room making system to support a multitude of new features for rooms.
  • Added a 2 new commands: "alexandria getRoomName" and "alexandria loadNPCParadise"
  • Added "BuildNewRoomFromResource" an actually functional method for loading .newroom files from an embedded resource.
  • Added new storage class "EnemyGUIDs", which has every GUID of every enemy clearly defined. No more opening the gitbook for it!
  • Cleaned up some excess debug logging.
  • Updated the exotic objects list with at least 6 dozen new objects idk I wasnt counting.

0.3.12

  • Fixed error related to AddSpriteToObjectAssetbundle added previously.

0.3.11

  • Fixed CharacterAPI issue with selecting new characters within the Breach.
  • Fixed very small CharacterAPI issue related to hands.
  • Added new Classes to support imported sprite collections from assetbundles.
  • Added JsonEmbedder (under Alexandria.Assetbundles)
  • Added ProjectileBuilders (under Alexandria.Assetbundles)
  • Added GunInt (under Alexandria.Assetbundles)

0.3.10

  • Added the method 'AddSpriteToObjectAssetbundle' To ItemAPI.

0.3.9

  • Fixes
  • Added proper support for enemy wave triggers and node path types for custom rooms made with the most recent version of Room Architect Tool (2.1).

0.3.8

  • Fixes
  • Fixed another CharacterAPI bug. Thank you Bot :)

0.3.7

  • Fixes

  • Fixed hand sprites not working for CharacterAPI characters set up through assetbundle setup

  • Fixed Custom Characters that use Armor only for health not having certain extra life items work.

  • NOTE, any modder that wants to account for Armor-Only characters for certain effects should check the players ForceZeroHealthState bool and NOT the characterIdentity!

  • Fixed legacy character sprite setup not having functional hands (Hopefully)

  • Changes

  • Added EnableDebugLogging for DungeonAPI (It can be accessed through the RoomUtility class). All it does is enable some debug logging in RoomFactory

0.3.6

  • Additions:
  • Added Methods ( ReturnShopItemController ) and ( ReturnStartPrice ) to the ShopDiscountController component
  • Added new bool to ProjectileSlashingBehaviour: DestroysOnlyComponentAfterFirstSlash. I think you can guess what it does.
  • Added Method ( ReturnRadialIndicator )to MagicCircleDoer so I dont have to use reflections to get it.
  • Fixes:
  • Fixed bug where Size 2 fish couldn't be caught.

0.3.5

  • Hopefully reimplemented the ImprovedAfterImageController.

0.3.4

  • (Hopefully) Fixed CharacterAPI bug where non-custom characters who would finish a run by using the Gun That Can Kill The Past without the Bullet would cause the Ammonomicon page to pop up immediately, and the next run have broken lighting and a disabled minimap.
  • Made the MagicCircle class (Under Alexandria.Misc) public

0.3.3

  • Implemented the ImprovedAfterImageController.

0.3.2

  • Unreverted most of the previous changes. (A specific hook was disabled.)

0.3.1

  • Rolled back previous change due to currently unknown circumstances causing serious issues.

0.3.0

  • Added additional synergy processors for volley modification and orbiting guns.

0.2.35

  • Fixed (Hopefully) error with Blessed Mode on switching guns / picking up new ones.

0.2.34

  • I forgot.

0.2.33

  • I'm going to have a heart attack
  • HOPEFULLY ACTUALLY fixed the Discount Manager for real this time

0.2.32

  • Hopefully refixed the unfixing of the Custom Discount Manager. Heh.

0.2.31

  • Fixed issues with creating debris via BreakableAPI.
  • Added VisualAPI, with tools for making Visual Effects and animations.
  • Fixed issues with .newroom files failing to load.

0.2.30

  • Hopefully fixed the Custom Discount Manager for the last time.
  • Note about the previous addition (Custom character sprites can now be loaded from asset bundles) This does not include punchout sprites, facecards, room icons, etc. This currently ONLY works for character sprites, alt character sprites and the bosscard

0.2.29

  • Custom character sprites can now be loaded from asset bundles.

0.2.28

  • Fixed the ProjectileSlashingBehaviour not working correctly and added additional override methods for custom slash functionality.

0.2.27

  • Improved MagicCircleDoer.
  • Expanded the functionality of the ProjectileSlashingBehaviour.

0.2.26

  • Fixed inconsistent version numbering.

0.2.25 Fixes

  • Fixed a bug where Custom Characters would break if the game's language was not set to English. Additions
  • Added improved support and compatibility for gun synergy transformations.

0.2.23 Fixes

  • Fixed a bug that introduced economic inflation to the game

0.2.22 Fixes

  • Added failsafe to CustomDiscountManager for prices that already start off discounted (Ex. Cursula)

0.2.21 Fixes

  • Fixed Punchout sprite error caused by custom characters made with Alexandrias CharacterAPI.
  • Note, this will NOT fix punchout sprites for Custom Characters using a custom version of CharacterAPI.
  • Hopefully fixed all Punchout bugs related to CharacterAPI Custom Characters.

0.2.20

  • Changes:
  • Disabled CharacterAPI logging after forgetting to disable it
  • Improved AddTrailToProjectile method in TrailAPI
  • Fixed helix inversion in ImprovedHelixProjectile

0.2.19 Fixes:

  • Added nullcheck to projectile.SendInRandomDirection()
  • Added nullcheck to projectile.GetVectorToNearestEnemy()
  • Hopefully fixed punchout bug related to custom characters and repeat playthroughs of Punchout in one session (Note, a fix for Rat sprites is still being worked on)

Additions:

  • Added easier RemovePassiveStatModifier method to ItemBuilder
  • Added a Clone method to GoopUtility
  • Added summary and argument descriptions to ItemAPIs Guntools.SetProjectileSpriteRight()
  • Added AddAnimationToProjectile to ItemAPIs Guntools class
  • RoomRewardAPI now can change reward chance

0.2.18

  • Fixed AddSpriteToObject attempting to use an object that didnt exist if an object wasnt given to it in the first place
  • Altered gay_porn.png
  • Added CopyBulletBankEntry to EnemyBuildingTools

0.2.17

  • AddPassiveStatModifier and RemovePassiveStatModifier methods in ItemBuilder can now accept Gun type pickup objects
  • Added AddCurrentGunStatModifier and RemoveCurrentGunStatModifier
  • Alexandria now logs its version number into the F2 console as well

0.2.16

  • Added RoomRewardAPI, which lets you override room clear rewards. Thank you to June_ for this!

0.2.15 Changes:

  • Added a custom action for breaking a minor breakable object.
  • Added easier MagicCircle support for radial effects similar to the effect of Table Tech Heat.
  • Added an AdvancedGunVolleyModificationSynergy component.
  • Added gay_porn.png

Fixes:

  • Made the DisableEffect method in CustomDualWieldSynergyProcessor public instead of private.
  • Made AdvancedFireOnReloadSynergyProcessor public.

0.2.14 Fixes:

  • Fixed BreakableAPI not being in the right namespace
  • Added BeamController nullchecks in HandleFreeFiringBeam
  • Hopefully fixed a null caused by LocalShaderNameGetHook

Changes

  • Any characters that are added through Alexandrias CharacterAPI will now be accessible from MTGAPIs character command

Misc:

  • Added some undocumented ShopAPI summaries
  • Added some more proper documentation for LootUtilitys AddItemsToPool, along with a new AddItemsToPool variant that uses a dictionary of ints and floats
  • Added TrailAPI undocumented arguments
  • Updated an old discount manager summary
  • Cleaned up some debug logging for unfinished Alexandria feature

0.2.13

  • Hopefully fixed some garbage that didn't work because I uploaded the wrong version on accident, like a moron.

0.2.12 Significant Changes:

  • Added new API: BreakableAPI, which contains lots of methods for creating custom breakables, derbis and other objects.
  • Added new class under EnemyAPI: EnemyBuildingTools. Enemy building tools has a couple of methods which helps with certain aspects of enemy creation.
  • Added new class under Misc: MiscUtility. Currently only has tools for creating WeightedTypeCollections and WeightedTypes
  • Added new class under Misc: Tk2dSpriteAnimatorUtility. Has a few methods related to Tk2dSpriteAnimators

Bugfixes:

  • Fixed custom character foyer cards not scaling correctly
  • Fixed small issue with EnemyBuilder and BossBuilder creating enemies with null bullet bank entries, causing issues if you tried to add a bullet to the entry.

Misc:

  • Added bool to enable/ disable CharacterAPI related debug logging (ToolsCharApi.EnableDebugLogging). By default it is false.
  • Tweaked summary of PostDungeonTrueStart Action
  • Some other minor things

0.2.11 Bugfixes:

  • Fixed an issue where goop just didnt work at all

0.2.10 Bugfixes:

  • Fixed an issue where the mod wouldnt load

0.2.9 Significant Changes:

  • Added a new class called GoopUtility, which contains static references to all vanilla goop types, as well as the utility necessary for creating custom goops.

Bugfixes:

  • Fixed an issue where rage effects triggered through Alexandria would cause an error.
  • Fixed an issue where invulnerability effects triggered through Alexandria would never end.
  • Fixed an issue where Alexandria would cause errors with spapi's singleplayer cultist.

0.2.8

  • Added an emergency fix for instances where the extended player component is checked for before it has been added.

0.2.7 Significant Changes:

  • Added the following actions to ExtendedPlayerComponent; OnBlankModificationItemProcessed, OnNewOrbitalInitialised.

Minor Changes:

  • Removed unecessary console logging.
  • Fixed OnPickedUpHP actions not triggering.

0.2.6 Significant Changes:

  • Added a Vector2 extension called GetPositionOfNearestEnemy which returns the Vector2 position of the closest enemy to the initial position.
  • Added MasteryOverrideHandler under the DungeonAPI namespace. MasteryOverrideHandler contains the method 'RegisterFloorForMasterySpawn', which allows users to tell Alexandria that one of the three viable secret floors (Oub, Abbey, or R&G) should spawn a master round (namely the Keep master round).
  • Added the 'OnRewardPedestalDetermineContents' action to CustomActions. This runs whenever a reward pedestal goes to calculate it's item, and allows those who subscribe to it to add item ids and weights to a list which will be converted into an override item pool for the pedestal. Ideal for those looking to add new master rounds or change boss rewards.

Minor Changes:

  • Added the following actions to ExtendedPlayerComponent; OnCompanionSpawnedBullet, OnCompanionStatsQueried, and OnPickedUpBlank.
  • Added the following actions to CustomActions; OnRatMazeFailed, OnLOTJSpawned, and OnAnyPlayerCollectedBlank.
  • Added XML comments for the actions in ExtendedPlayerComponent and CustomActions.
  • Added a GetVectorToNearestEnemy extension to Vector2 for easier shorthand.
  • Fixed an issue where ImprovedHelixProjectile was not public.
  • Improved the OnRunStart action with the help of SomeBunny to function effectively on shortcuts.
  • Removed duplicate RecalculateOrbitals method in OrbitalUtility.

0.2.5 Significant Changes:

  • None

Minor Changes:

  • Fixed an exception in CustomActions caused by a hook not being static.
  • Added an 'excludedActors' list to all GetNearestEnemyToPosition methods to allow the easy exclusion of specific AIActors.
  • Fixed a capitalisation issue in the ChestAPI namespace.

0.2.4 Significant Changes:

  • Added the CustomDiscountController, a system for designing dynamic, intelligent shop discounts.
  • Added the following Actions to CustomActions; OnAnyPlayerCollectedAmmo, OnAnyPlayerCollectedKey, OnAnyPlayerCollectedHealth, OnShopItemStarted, and OnAnyPlayerNudgedHealth.
  • Added the following Actions to ExtendedPlayerComponent; OnActiveItemPreDrop, OnPickedUpAmmo, OnPickedUpKey, OnPickedUpHP, and OnNudgedHP.
  • Added a ShadowBulletDoer, for simpler triggering of shadow bullet/pop-pop style bullet chain effects.
  • Added an ImprovedHelixProjectile projectile type, for the creation of simpler default helix motion bullets.
  • Added XML comments for methods in the following classes; ProjectileUtility, AIActorUtility, AlexandriaTags, MathAndLogicExtensions, PlayerUtility, and ExtendedPlayerComponent.
  • Added ChestUtility, which is NOT a toolbox for making chests, but contains a number of useful methods for spawning existing chest types, performing actions on existing chests at runtime.
  • Added an interface called ILabelItem, which allows the user to set a custom string label that should be displayed in the corner of the active item slot.
  • Added 'GameManagerUtility', a class containing extension methods relating to global things such as checking both playercontrollers.
  • Added 'RuntimeRoomhandlerUtility', a class containing extension methods relating to room handlers. Only relates to roomhandlers at runtime, and is NOT related to room setup.

Minor Changes:

  • Made TrailAPI & EnumUtility public.
  • Added extension methods for MakeFakePrefab and InstantiateAndFakePrefab.
  • Reimplemented the 'AddProjectileModuleToRawVolleyFrom' method into GunTools.
  • Performed general code maintenance on; BeamAPI, and ExtendedPlayerComponent.
  • Added an extension method to AIActorUtility which triggers a genie punch on the AIActor, an extension method which searches for a given DirectionalAnimation on the AIAnimator, and an extension method for more easily transmogrifying given enemies, with more control over the parameters and outcome.
  • Added an extension method to AlexandriaTags which allows to user to easily check if an actor has any of the given tags in a list.

0.2.3

  1. today i will forget to test my code before uploading

0.2.2

  1. got angry and ripped out the sprite handler add animation methods coz they where useless
  2. some other shit thats probably important

0.2.1

  1. i litterally have no clue

0.2.0

  1. updated Chamber Gun API
  2. fixed a bunch of bugs
  3. updated dungeon api so it can load room from the upcoming RAT update
  4. updated NPCAPI to allow for true custom npc creation outside of shops
  5. probably other shit idk

0.1.3:

  1. fixed issues with references causing a lot of things to break

0.1.2:

  1. im a dumbass and fucked up the file setup

0.1.1:

  1. fixed an issue where some projectile sprites wouldn't show up correctly in game
  2. fixed an issue where CustomActions was private

0.1.0:

  1. initial releases