-
Notifications
You must be signed in to change notification settings - Fork 39
Expand file tree
/
Copy pathchangelog.txt
More file actions
1615 lines (1614 loc) · 84.9 KB
/
changelog.txt
File metadata and controls
1615 lines (1614 loc) · 84.9 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
v1.1.2 -
Added:
* ModCallbacks:
- MC_PRE_UPDATE()
Triggers before the game's main update cycle.
Can be used to prevent the normal update, effectively pausing the game.
- MC_PRE_ROOM_COLLISION_PASS()
Triggers right before collision detection.
- MC_GET_BOSS_THEMATIC_ITEM(boolean Spawned, CollectibleType SpawnedCollectible, TrinketType SpawnedTrinket)
Triggers after boss room clean. Used to spawn/overwrite result of second collectible or trinket.
Return table with field "Collectible" to spawn collectible, or "Trinket" to spawn trinket.
Alternatively you can return ``true`` to cancel item spawn altogether.
- MC_PRE/POST_RENDER_CHARACTER_SELECT_PORTRAIT(PlayerType, Sprite, Vector Position, Vector DefaultScale, Color DefaultColor)
On PRE, return false to cancel rendering, or a Vector to change the Position.
Modifications made to the Sprite during this callback WILL apply to the natural render.
PlayerType is -1 when "random character" is selected.
Optional param: PlayerType
- MC_PRE/POST_RENDER_CHARACTER_SELECT_PAGE(PlayerType, Vector Position, Sprite DefaultSprite, Sprite ModdedSprite, bool HasCustomBackground)
PRE supports returning false to cancel rendering. Modifications made to the Sprites will apply to the natural render.
ModdedSprite can only be non-nil for modded characters. HasCustomBackground indicates if ModdedSprite includes a background paper.
PlayerType is -1 when "random character" is selected.
Optional param: PlayerType
- MC_PRE_BOMB_DAMAGE(Vector Position, float Damage, float Radius, bool LineCheck, Entity Source, TearFlags, DamageFlags, bool DamageSource)
Called before Game():BombDamage(), used to damage entities in a radius for explosions, etc.
Return false to cancel, or a table containing changed values for Position, Damage, Radius, TearFlags, and/or DamageFlags.
Optional param is the EntityType of the Source entity, if one exists (the Source can be nil).
- MC_PRE_BOMB_TEARFLAG_EFFECTS(Vector Position, float Radius, TearFlags, Entity Source, float RadiusMult)
Called before Game():BombTearflagEffects(), used when TearFlags-based effects are triggered by an explosion.
Return false to cancel, or a table containing changed values for Position, Radius, TearFlags, and/or RadiusMult.
Optional param is the EntityType of the Source entity, if one exists (the Source can be nil).
- MC_PRE/POST_BRIMSTONE_SNEEZE(Entity Source, Vector Direction, float DamageScale)
Runs for the Hemoptysis / Tainted Azazel sneeze attack.
- MC_CAN_SELECT_CHARACTER(PlayerType, bool IsBeingSelected)
Will only run for characters present in the character select menu that are capable of being selected (IE, not hidden or locked behind an achievement).
Return false to prevent the character from being selectable. This has no visual effects.
IsBeingSelected is true if the player is actually trying to start a run with the character. Returning false in this case will play the error buzzer sound.
Otherwise, this is just a check by some other logic (such as deciding which characters are eligible for random character selection).
Optional param: PlayerType
- MC_PRE/POST_HISTORYHUD_RENDER
Return false to cancel rendering. Return a table to skip rendering the icons for specific items.
Example: `return { HideCollectibles = { CollectibleType.COLLECTIBLE_SAD_ONION, CollectibleType.COLLECTIBLE_INNER_EYE }, HideTrinkets = { TrinketType.TRINKET_SWALLOWED_PENNY } }`
- MC_POST_HISTORYHUD_RECOMPUTE
- MC_PRE/POST_GRID_HURT(GridEntity, int Damage, EntityRef Source)
Runs when a Poop or TNT GridEntity takes damage.
On PRE, you can return an integer to modify the damage, or return false to cancel the damage.
Optional param: GridEntityType
- MC_POST_TRIGGER_COLLECTIBLE_ADDED(EntityPlayer, CollectibleType, FirstTimePickingUp, IsWispOrInnate)
Runs for real collectibles, wisps AND innate items.
Optional param: CollectibleType
- MC_POST_ADD_INNATE_COLLECTIBLE/TRINKET(EntityPlayer, CollectibleType/TrinketType, string GroupKey, int Amount, int Duration)
Optional param: CollectibleType/TrinketType OR GroupKey
- MC_POST_REMOVE_INNATE_COLLECTIBLE/TRINKET(EntityPlayer, CollectibleType/TrinketType, string GroupKey, int Amount, bool ExpiredDuration)
Optional param: CollectibleType/TrinketType OR GroupKey
* EntityLaser:
- SetInitSound(SoundEffect sound)
- Get/SetNumChainedLasers
This is used by the Monstro's Lung + Technology synergy
* EntityPlayer:
- ShootRedCandle and ShootBlueCandle now returns an EntityEffect for the flame.
- AddBoneOrbital now returns the bone orbital familiar spawned.
- [Get/Set]ImExcitedSpeedupCountdown
- [Get/Set]DonateLuck
- GetErrorTrinketEffect
- [Get/Set]RUAWizardTimer
- GetBloodGushSprite
- CalculateBagOfCraftingOutput
- RemoveInnateCollectible(CollectibleType, int Amount = 1, string GroupKey = "") -> int
- GetInnateCollectibleCount(CollectibleType, string GroupKey = "")
- SetInnateCollectibleCount(TrinketType, int NewCount, string GroupKey = "", bool AddCostume = true)
- GetInnateCollectibleGroup(string GroupKey) -> table
- SetInnateCollectibleGroup(string GroupKey, table, bool AddCostumes = true)
- AddInnateTrinket(TrinketType, int Amount = 1, string GroupKey = "", int Duration = -1, bool AddCostume = true)
- RemoveInnateTrinket(TrinketType, int Amount = 1, string GroupKey = "") -> int
- GetInnateTrinketCount(TrinketType, string GroupKey = "")
- SetInnateTrinketCount(TrinketType, int NewCount, string GroupKey = "", bool AddCostume = true)
- GetInnateTrinketGroup(string GroupKey) -> table
- SetInnateTrinketGroup(string GroupKey, table, bool AddCostumes = true)
- ClearInnateItemGroup(string GroupKey)
- BlockTrinket
- UnblockTrinket
- IsTrinketBlocked
* EntityEffect
- [Get/Set/Add/Clear/Has]TearFlags
Only works for applicable EffectVariants: PLAYER_CREEP_HOLYWATER_TRAIL, BRIMSTONE_BALL, TECH_DOT, and CHAIN_LIGHTNING
* EntityKnife
- SetKnifeDistance
- SetKnifeVelocity
* TearParams
- MassMultiplier
- KnockbackMultiplier
- SpeedMultiplier
- TearDisplacement
* PersistentGameData:
- Unlock: same as TryUnlock but it overrides situations where TryUnlock would be blocked normally (Challenges)
* RoomDescriptor
- GetErrorTrinketEffect
- GetValidNeighborPlacementLocations(RoomShape = RoomShape.ROOMSHAPE_1x1, DoorMask = -1, bool AllowMultipleDoors = true, bool AllowSpecialNeighbors = false)
- GetValidNeighborPlacementLocations(RoomConfigRoom, bool AllowMultipleDoors = true, bool AllowSpecialNeighbors = false)
* RoomConfig:
- LoadStb(StbType, int Mode, string StbFileName)
* RoomConfigSet:
- LoadStb(string StbFileName)
* CharacterMenu
- GetCompletionMarksSprite
* History
- SearchCollectibles(int or table)
- SearchTrinkets(int or table)
* HUD
- GetHistoryHUD
* Sprite:
- Copy()
- GetSpritesheet(int layerId)
- SetSpritesheet(int layerId, Image)
* LayerState:
- GetSpritesheet()
- SetSpritesheet(Image)
* Renderer:
- CreateImage(int width, int height, string name)
- RenderToImage(Image, function)
- LoadShader(string path, table vertexDesc)
- GetShaderByType(ShaderType)
- GetPixelationAmount()
- GetClipPaneNormal()
- GetClipPaneThreshold()
- VertexAttributeFormat enum
* Image:
- GetWidth()
- GetHeight()
- GetPaddedWidth()
- GetPaddedHeight()
- GetName()
- GetTexelRegion(int x, int y, int width, int height)
- Render(SourceQuad, DestinationQuad, KColor, ColorMod)
- RenderWithShader(SourceQuad, DestinationQuad, KColor, Shader, table shaderParams)
* DestinationQuad:
- NewFromBounds(Vector topLeft, Vector bottomRight)
- NewFromRectangle(Vector topLeft, float width, float height)
- Copy()
- Translate(Vector)
- Scale(Vector, Vector anchor)
- Rotate(number, Vector anchor)
- Shear(Vector, Vector anchor)
- ApplyMatrix(table renderMatrix, Vector anchor)
- Flip(bool flipX, bool flipY)
- __tostring
* SourceQuad:
- NewFromBounds(Vector topLeft, Vector bottomRight, bool uv)
- NewFromRectangle(Vector topLeft, float width, float height, bool uv)
- Copy() override
- IsUVSpace()
- ConvertToPixelSpace()
- ConvertToUVSpace()
- __tostring override
* BlendMode:
- New(int rgbSrc, int rgbDest, int alphaSrc, int alphaDest, int equation)
- NewFromType(BlendType type)
* Enums:
- PillEffectSubClass
- CompletionStatus
- ChargeType
- EnemyTargetFlags
- TrinketSlot
* Added EntitySaveStateManager class to support persistent, modded save data for entities.
* Added HistoryHUD and HistoryHUDItem classes
* Backported new enums for GameStateFlag
* Added "isActiveEnemy" attribute for EntityNPCs in entities2.xml (set to "true" or "false")
* Added "innateitems" and "innatetrinkets" attributes for players.xml (comma-separated list of IDs or names)
* Added SplitTearType.SWORD_BEAM
* The "Error" and "Modeling Clay" trinkets now use the sprite of the item they are mimicking when smelted, like how they do in later versions of Repentance+.
* Removed unused class constructors in Renderer.
/newline/
Modified:
* Isaac:
- StartNewGame
Added optional param "bool isCustomRun".
Added function variant that takes a whole Seeds object instead of a seed integer.
* Room:
- SetRedHeartDamage
Added optional param "bool value".
* EntityPlayer:
- SetControllerIndex(int ControllerIndex, boolean IncludePlayerOwned = false)
If IncludePlayerOwned set to true, then sets ControllerIndex for player's subplayer/twinplayer
- AddInnateCollectible(CollectibleType, int Amount = 1, string GroupKey = "", int Duration = -1, bool AddCostume = true)
A "GroupKey" represents a distinct set of innate items. Innate item functions that take a GroupKey will only interact with items under that key.
This enables complete separation between different mechanics/mods/effects utilizing innate items, assuming distinct GroupKeys are used.
IMPORTANT: Using a non-empty GroupKey also enables persistence across save & continue and proper gamestate handling overall.
Various additional functions were added to take advantage of the GroupKey system for innate items.
Note: Removing innate items via a negative "Amount" is deprecated and does not support new features. Use RemoveInnateCollectible instead.
* CostumeSpriteDesc:
- Renamed GetHeadColor -> GetDefaultSkinColor
- Renamed GetBodyColor -> GetSkinColor
* ModCallbacks:
- MC_POST_PLAYER_DROP_TRINKET
Added DroppedTrinket param.
- MC_(POST_)ENTITY_TAKE_DMG
Added ExtraSource param. This is an additional EntityRef provided in specific situations where the "Source" of the damage may be indirect.
For example, lasers and melee hitboxes provide their parent (ie, the player) instead of themselves as the damage Source. The laser/knife will now be passed as the ExtraSource!
Currently supported: lasers, melee hitbox knives, gello, and brimstone balls.
Note that ExtraSource is nil if not available.
/newline/
Fixes:
* ModCallbacks:
- Fixed MC_GET_STATUS_EFFECT_TARGET not running for the "shrink" status effect.
* EntityPlayer:
- Fixed SetPoopSpell & RemovePoopSpell not working correctly and messing up the poop mana value.
* EntityPickup
- Fix some crashes related to GetLootList
* CharacterMenu:
- Fixed GetCharacterMenuIDFromPlayerType not returning the correct value for Tainted Isaac
* Fixed modded characters' locked/door sprites rendering on the "continue" widget if they are locked behind an achievement.
* Fixed custom caches not running for golden trinkets.
* Fixed multiple instances where the "Controller Disconnected" popup could trigger when continuing a run, such as modded twins/coplayers, and a vanilla bug with Jacob & Esau as a co-op player.
* Fixed a vanilla bug that caused Blood Baby familiars to render incorrectly when using Dataminer.
* Fixed custom revives on twins (especially the non-main twin, ie Esau) not reliably preventing save deletion or the run ending, alongside other quirks.
* Reviving a coin health character will now leave them with a whole coin heart instead of half of one.
* Fixed some cases where the "Attempt to load a save file with the wrong number of achievements!" error could trigger undesirably when saves are manually replaced.
/newline/
/versionseparator/
v1.1.1a -
* Fixed inconsistent syncing of game options (options.ini) between vanilla and REPENTOGON for some users.
- These options were intended to fully sync between vanilla and REPENTOGON. Being able to have different settings (such as the Mods Enabled setting) was a bug, but...
- Options Syncing can now be disabled in the Imgui Console's REPENTOGON Options menu (added toggles for "Sync Vanilla Game Options" & "Sync Mods Enabled Option")
/newline/
/versionseparator/
v1.1.1 -
Added:
* Mods can now load assets from resources-repentogon and content-repentogon folders for compatibility. Takes priority over -dlc3 folders (e.g resources-repentogon > resources-dlc3 > resources).
* Game:
- IsStartingFromState
Returns a boolean whether the game starts from a continued state or not. Always returns false after MC_POST_GAME_STARTED execution.
* EntityBomb
- Get/SetFallSpeed
Formerly mislabeled as Get/SetHeight
- Get/SetFallAcceleration
Formerly mislabeled as Get/SetFallingSpeed
* EntityTear
- SetInitSound(SoundEffect sound)
* MenuSave
- SetSlotSpritesheet(int slot, string pngfilename)
Overrides the spritesheet used for a save file drawing. MC_POST_SAVESLOT_LOAD is a good place to use this.
* ModCallbacks:
- Added "RemoveFromPlayerForm" and "Wisp" args to MC_POST_TRIGGER_COLLECTIBLE_REMOVED.
* Enums:
- SlotState
- BloodClotSubtype
- RoomDisplayFlags
/newline/
Fixes:
* Isaac:
- Restored deprecated Isaac.ClearBossHazards for compatibility, but Room:ClearBossHazards should be used instead.
- Fixed possible crashes involving ClearChallenge and MarkChallengeAsNotDone.
* Vector:
- Lerp now returns a reference to the modified vector like it now does in vanilla.
* RoomDescriptor:
- Fixed GetNeighboringRooms returning a number instead of a table.
* Room:
- SetItemPool no longer crashes or errors on POOL_NULL
* ScoreSheet:
- Fixed crash related to AddFinishedStage
* ModCallbacks:
- Fixed broken color userdata in MC_POST_ENTITY_SET_COLOR
* XMLData:
- Fixed GetEntryByOrder results for XMLNode.NULLCOSTUME
- Fixed crashes on invalid node types
* Dear ImGui Console Menus:
- Game Options: Music Volume slider now immediately updates the volume of the currently-playing music.
- Save Management: "Import from Repentance" no longer "fails" if a file doesn't exist.
* Fixed possible crash on the secrets menu.
* Fixed the custom challenges menu resetting when any console command is executed.
* Fixed the game potentially getting stuck trying to generate an ascent floor if a modded boss room has certain door layouts (again)
/newline/
/versionseparator/
v1.1.0 -
* Welcome to REPENTOGON+ !
/newline/
Additions:
* GridEntityLock
- TryUnlock(EntityPlayer player, bool force)
* Camera:
- Update(bool Interpolated = false)
- SetClampEnabled(bool clamped)
- IsClampEnabled
* ChallengeParam:
- IsBeastPath
* Game:
- ChainLightning(Vector Position, float BaseDamage = 3.5, TearFlags TearFlags = TearFlags.TEAR_NORMAL, Entity Spanwer = nil)
* GridEntity:
- [Get/Set/Reset]WaterClipFlags
* Entity:
- [Get/Set/Reset]WaterClipFlags
- CanDevolve
* EntityDesc:
- EntityDesc(EntityType Type = 0, int Variant = 0, int Subtype = 0, ChampionColor ChampionId = -1, float Health = 0.0, float MaxHealth = 0.0, boolean PlayerControlled = false)
- [Get/Set]Type
- [Get/Set]Variant
- [Get/Set]Subtype
- [Get/Set]ChampionId
- [Get/Set]Health
- [Get/Set]MaxHealth
- [Is/Set]PlayerControlled
* EntityPickup:
- GetMegaChest[Left/Right]Collectible
Returns the other EntityPickup for a Mega Chest
- HasFlipData
Returns true if pickup is collectible and has Flip save state.
- GetFlipCollectible
Returns CollectibleType if flip save state exists, nil otherwise.
- InitFlipState(CollectibleType = CollectibleType.COLLECTIBLE_NULL, SetupCollectibleGraphics = true)
- ReloadGraphics(boolean IgnoreBlind)
- SetupCollectibleGraphics(Sprite Sprite, integer Layer, CollectibleType Collectible, boolean Blind, integer Seed = Random(), boolean LoadGraphics)
Static method. Used to replace layer's spritesheet of the sprite object with collectible sprite. Seed is used for April Fools challenge to choose random collectible.
* EntityPlayer:
- [Get/Set]ActionHoldDrop - how long player holds action drop button.
- [Get/Set]BlinkLockTime - how long player's head will play fired frame sprite
- GetBodySprite
Temporary copy of body player sprite while null animation is active.
- SetD8DamageModifier
- SetD8FireDelayModifier
- SetD8RangeModifier
- SetD8SpeedModifier
- [Get/Set]ForgottenSwapFormCooldown
- [Get/Set]ItemStateCooldown
- [Get/Set]MaggyHealthDrainCooldown
- [Get/Set]MawOfTheVoidCharge
- [Get/Set]MontezumaRevengeCharge
- [Get/Set]PlanCKillCountdown
- [Get/Set]PotatoPeelerUses
Used to increment Cube of Meat familiar form
- [Get/Set]RockBottomMoveSpeed
- [Get/Set]RockBottomMaxFireDelay
- [Get/Set]RockBottomDamage
- [Get/Set]RockBottomTearRange
- [Get/Set]RockBottomShotSpeed
- [Get/Set]RockBottomLuck
- [Get/Set]RevelationCharge
- GetPlayerHUD
- [Get/Set]SuplexState
- [Get/Set]SuplexAimCountdown
- [Get/Set]SuplexTargetPosition
- [Get/Set]SuplexLandPosition
- CreateAfterimage
- [Add/Get]CandyHeartBonus
- [Add/Get]SoulLocketBonus
- GetTearsCap
- GetStatMultiplier
- GetSmeltedTrinketDesc
- [Get/Set]CharmOfTheVampireKills
- IsPostLevelInitFinished
- HasForcedCamoEffect
- SetForceCamoEffect
- HasCamoEffect
- PlayItemNullAnimation
Returns true if animation was set successfully, false otherwise. Useful for item state/hold items.
* EntityFamiliar:
- IsLilDelirium
- SetLilDelirium
- GetRandomWisp
- GetActiveWeaponEntity
- GetActiveWeaponNumFired
* EntityTear:
- GetHitList
- ClearHitList
- FireSplitTear
* EntityLaser:
- FireSplitTear
* EntityKnife:
- FireSplitTear
- GetHitboxParentKnife
- SetHitboxParentKnife
* EntitySlot:
- GetPrizeSprite
* EntityNPC:
- ApplyTearflagEffects
* EntityConfigEntity:
- GetDevolvedEntity
* Level:
- Added overloads for CanPlaceRoom(AtDoor) and FindValidRoomPlacementLocations that accept a RoomShape and DoorMask instead of a RoomConfigRoom.
- GetGenerationRNG
* PlayerManager:
- GetRandomCollectibleOwner
- GetRandomTrinketOwner
* Isaac:
- GetButtonsSprite
- GetAllowedDoorsMaskForRoomShape: Returns a DoorMask representing all DoorSlots that are allowed for the given RoomShape.
- UnClearChallenge(challenge id): sets the target challenge id as not cleared. Not recommended with vanilla ones, it should still work tho!
- SpawnBoss(Type,Variant,SubType,Position,Velocity,Spawner,Seed = ?) Spawns an NPC forcing it to be a Boss, giving it a boss bar and boss-lile qualities.
- GetNanoTime(): Returns a high-resolution timestamp in nanoseconds.
- RenderCollectionItem(CollectibleType Collectible, Vector Position, Vector Scale = Vector.One, Color Color = Color.Default)
- ReworkCollectible(Collectible): marks the collectible as reworked, making the game not execute the item's original logic.
- ReworkBirthright(PlayerType): marks the birthright as reworked, making the game not execute the item's original logic.
- ReworkTrinket(Trinket): marks the trinket as reworked, making the game not execute the trinket's original logic.
* ItemPool:
- AddCollectible
- AddTemporaryCollectible
- RemoveTemporaryCollectible
* ItemConfig_Item:
- Add/RemoveCustomTag
- Add/RemoveCustomCacheTag
* HUD:
- GetStackedStreakSprite
- GetPlayerStreakSprite
* Minimap:
- Refresh
* PlayerHUD:
- GetIndex
- GetLayout
* ProceduralEffect
- Fix fartScale.
- GetScore
- GetTriggerChanceScale
* Room:
- ClearBossHazards(boolean IgnoreNPCs = true, EntityNPC Entity = nil)
- TriggerOutput(RoomEventOutput GroupIdx)
- GetWallColor()
* RoomConfig:
- AddRooms
* RoomConfigSet:
- AddRooms
* RoomDescriptor:
- [Get/Set]TaintedKeeperCoinSpawns
Prevent coin spawn from killed enemies on room reenter when counter reaches 10.
* ScoreSheet:
- GetBeastBonus
- GetDeliriumBonus
- GetMotherBonus
* Seeds:
- SetStageSeed(LevelStage, Seed)
* FXLayers:
- AddPoopFx(ColorMod Color)
* Weapon:
- GetMainEntity
Returns active entity used by weapon (Brimstone - EntityLaser, Mom's Knife - EntityKnife and etc.)
* MenuManager:
- IsActive: returns true when MenuManager is ready to be used a.k.a if you can use the menuman functions (normally, if you are at the main menu)
* CharacterMenu
- GetPlayerTypeFromCharacterMenuID(int CharacterMenuID, bool Tainted)
Tainted boolean defaults to current menu if unspecified.
- GetCharacterMenuIDFromPlayerType(int PlayerType)
Note that the normal/tainted versions of a character have the same CharacterMenuID.
- GetSelectedCharacterPlayerType()
Returns the PlayerType for the character currently selected in the menu.
* Players.xml
- Added support for modded/text trinkets on the "trinket" param (I forgot trinkets existed tbh, lol)
- Added "hideachievement" attribute, which hides the character from the character select menu until the corresponding achievement is obtained
(Doesn't do anything for tainted characters, since whether or not they appear on the menu is entirely dependant on the non-tainted character)
- Added "hurtsound" attribute, which overrides the player's damage sound.
- Added "deathsound" attribute, which overrides the player's death sound.
* Items.xml
- Added "activegfx" attribute, which sets separate active item image for rendering in active slot.
* ModCallbacks:
- MC_PRE_PLAYER_POCKET_ITEMS_SWAP(EntityPlayer player)
Triggers when the player swaps their pocket items using the action drop button (even if they are empty).
Return true to cancel pocket item swap.
- MC_PRE_TRIGGER_BED_SLEEP_EFFECT(EntityPlayer player)
Triggers if "SleepFillHP" item overlay sprite's event is triggered, and before the hearts addition is applied.
Return true to cancel vanilla behavior.
- MC_PRE_BED_SLEEP(EntityPlayer player, EntityPickup bed)
Triggers on bed collision and before playing sleep sequence.
Return true to cancel vanilla behavior.
- MC_PRE_ENTITY_SET_COLOR(Entity entity, int duration, int priority, bool fadeOut, bool share)
Fires when Entity:SetColor is called
Takes an EntityType as its optional argument.
Return a color to override the color. The overridden color is passed into MC_POST_ENTITY_SET_COLOR.
Return false to cancel the color change. Prevents MC_POST_ENTITY_SET_COLOR from firing.
This only fires for `Entity:SetColor` and does not fire when changing the entity's color directly.
- MC_POST_ENTITY_SET_COLOR(Entity entity, int duration, int priority, bool fadeOut, bool share)
Fires after an entity's color is changed via Entity:SetColor
This only fires for `Entity:SetColor` and does not fire when changing the entity's color directly.
- MC_POST_PLAYER_TRIGGER_ROOM_CLEAR
Previously missing counterpart to MC_PRE_PLAYER_TRIGGER_ROOM_CLEAR
- MC_GET_STATUS_EFFECT_TARGET(Entity entity)
Fires when an Entity is about to recieve a status effect
Takes EntityType as its optional argument.
Return an Entity to apply the status effect to it instead (good for multi-segment enemies).
- MC_PRE/POST_STATUS_EFFECT_APPLY(StatusEffect statusID, Entity entity, EntityRef source, integer duration)
Triggers before/after applying a status effect
Takes the new StatusEffect enum as its optional argument
Return false on the PRE callback to cancel adding the status effect
- MC_PLAYER_HEALTH_TYPE_CHANGE
Runs when a player's health type changes, but before automatic health conversion
- MC_POST_ROOM_RENDER_ENTITIES
Runs after all entities & grid entities in the room have been rendered, but BEFORE effects like overlays, shockwaves, and the mirror world effect are applied.
Rendering done on this callback is also preserved in room transition animations.
- MC_POST_START_AMBUSH_WAVE(boolean BossAmbush)
Fires at the start of challenge/boss rush room wave
- MC_POST_START_GREED_WAVE
Fires at the start of a Greed Mode wave
- MC_EVALUATE_MULTI_SHOT_PARAMS(EntityPlayer, MultiShotParams, WeaponType)
Optional param: PlayerType
Replacement for the legacy MC_POST_PLAYER_GET_MULTI_SHOT_PARAMS that passes along a mutable MultiShotParams and allows all mods to modify it.
- MC_EVALUATE_STAT(EntityPlayer, EvaluateStatStage stat, float currentValue)
Optional param: EvaluateStatStage
Used to modify intermediate values of player stat calculations.
Currently supported: EvaluateStatStage.TEARS_UP, EvaluateStatStage.FLAT_TEARS, EvaluateStatStage.DAMAGE_UP, EvaluateStatStage.FLAT_DAMAGE
NOTE: Unless you need to perform complicated conditions/calculations, it is strongly suggested that you use the new XML item stats features instead of this callback!
- MC_EVALUATE_TEAR_HIT_PARAMS(EntityPlayer, TearParams, WeaponType, float DamageScale, integer TearDisplacement, Entity Source)
Optional param: PlayerType
Used to modify mutable TearParams object.
- MC_PRE/POST_APPLY_TEARFLAG_EFFECTS(EntityNPC entity, Vector position, TearFlags, Entity source, float damage)
Optional param: EntityType of the source, if any
Called when TearFlags effects are applied to an npc. The source could be basically anything (tear, laser, knife, nil, etc)
- MC_POST_FIRE_SPLIT_TEAR(EntityTear tear, Entity source, SplitTearType|string)
Optional param: SplitTearType|string
Fires for stuff like cricket's body, parasite, etc
- MC_POST_ROOM_SAVE_STATE(Room, RoomDescriptor)
Fires after the room saves all entities and grid entities.
- MC_PRE_ROOM_RESTORE_STATE(Room, RoomDescriptor)
Fires before the room respawns all saved entities.
- MC_POST_SWAP_ROOMS(RoomDescriptor, RoomDescriptor)
Fires after two rooms have been swapped, due to Curse of the Maze.
- MC_POST_BACKWARDS_ROOM_SAVE(LevelStage, RoomDescriptor, string)
Fires after a room has been saved; to then be restored when generating the Ascent.
The string key (e.g. "boss_0", "treasure_0") identifies which slot the room was saved into.
- MC_POST_BACKWARDS_ROOM_RESTORE(LevelStage, RoomDescriptor, string)
Fires when generating the Ascent layout and one of the previously saved room is restored.
The string key (e.g. "boss_0", "treasure_0") identifies which slot the room was saved into.
- MC_PRE_ADD_TRINKET(player, TrinketType, firstTime)
Return false to cancel, or a different TrinketType to change the trinket being added.
- MC_TRY_ADD_TO_BAG_OF_CRAFTING(player, pickup, BagOfCraftingPickup[])
Optional param: PickupVariant
Return false to prevent, or return a table of BagOfCraftingPickups to modify what gets added.
Note: Prefer to use the new `bagofcrafting` attribute in entities2.xml where possible.
- MC_POST_ADD_TO_BAG_OF_CRAFTING(player, pickup)
Optional param: PickupVariant
Only runs when the pickup was successfully "added" to the bag.
- MC_POST_ITEM_OVERLAY_RENDER
- MC_PRE_OPEN_CHEST(EntityPickup, EntityPlayer?)
Optional param: PickupVariant
Fires before a chest is opened. Return false to prevent it from opening.
- MC_POST_OPEN_CHEST(EntityPickup, EntityPlayer?)
Optional param: PickupVariant
Fires after a chest opened.
- MC_POST_DISCHARGE_ACTIVE_ITEM(CollectibleType, boolean CollectibleRemoved, EntityPlayer, ActiveSlot)
- MC_POST_ROOM_TRIGGER_CLEAR(boolean Silent)
- MC_POST_PLAYER_DROP_TRINKET(TrinketType, Vector DropPosition, EntityPlayer, boolean IsGolden, boolean ReplaceTick)
Optional param : TrinketType
Fires after player dropped trinket.
- MC_POST_PLAYER_ADD_EFFECT(EntityPlayer, ItemConfigItem, boolean addCostume, int count)
Optional param: ItemConfigItem
- MC_POST_ROOM_ADD_EFFECT(ItemConfigItem)
Optional param: ItemConfigItem
- MC_POST_BOMB_DAMAGE(Vector Position, float Damage, float Radius, bool LineCheck, Entity Source, TearFlags, DamageFlags, bool DamageSource)
Called after Game():BombDamage(), used to damage entities in a radius for explosions, etc.
Optional param is the EntityType of the Source entity, if one exists (the Source can be nil).
- MC_POST_BOMB_TEARFLAG_EFFECTS(Vector Position, float Radius, TearFlags, Entity Source, float RadiusMult)
Called after Game():BombTearflagEffects(), used when TearFlags-based effects are triggered by an explosion.
Optional param is the EntityType of the Source entity, if one exists (the Source can be nil).
* New Enums:
- DoorMask
- WaterClipFlag
- PlayerHUDLayout
- RoomEventOutput
- CustomCacheTag
- EvaluateStatStage
- SplitTearType
- UseActiveItemResultFlag
* Options:
- AimLockEnabled
- AscentVoiceOver
- BossHPOnBottom
- Brightness
- Contrast
- Exposure
- OnlineChatEnabled (read-only)
- OnlineChatFilterEnabled (read-only)
- OnlineColorSet (read-only)
- OnlineHUD (read-only)
- OnlineInputDelay (read-only)
- OnlinePlayerOpacity (read-only)
- OnlinePlayerVolume (read-only)
- PreventModUpdates (now read-only)
- StreamerMode (read-only)
- TouchMode
- WindowHeight
- WindowPosX
- WindowPosY
- WindowWidth
* Added the following attributes for entities2.xml:
* bagofcrafting="..." - Allows specifying BagOfCraftingPickup results for bagging custom pickups
bagofcrafting="blackheart" - adds a black heart to the bag
bagofcrafting="penny bomb key" - adds a penny, bomb and key to the bag (up to 8 at once is supported)
bagofcrafting="none" - prevents the pickup from adding anything to the bag (may be useful for custom subtypes)
* meleecollide="true" - Allows the custom pickup to trigger collision with the player when hit by a bone club or similar melee weapon
* boomerang="true" - Allows the custom pickup to be grabbed by Boomerang / Jaw Bone
* Added the following customtag for items.xml:
* "noexpansionpack" - Prevents the active item (with 1 or 2 max charges) from being picked by Expansion Pack trinket.
* Added the following customcache for items.xml:
* "healthtype" - Re-evaluate the player's HealthType
* "tearscap" - Re-evaluate the player's maximum tears-per-second before flat modifiers and multipliers. Triggers a CACHE_FIREDELAY eval when changed.
* "statmultiplier" - Re-evaluate the multiplier on the player's stats gained from items (the same one used for Cracked Crown and Tainted Bethany). Triggers standard cache evals for the relevant stats when changed.
* Stats can now be assigned to collectibles, trinkets and nulls in items.xml! These stat modifications will behave identically to those from most vanilla items that modify those stats.
- For example:
tears="0.7" will behave like Sad Onion
flattears="0.5" will behave like Pisces
damage="1" will behave like Pentagram
flatdamage="2" will behave like Curved Horn
- Supported: tears, flattears, tearsmult, damage, flatdamage, damagemult, shotspeed, speed, range, luck
- Prepend "effect" to assign the stat change to the corresponding TemporaryEffect instead (ie: effecttears="0.7") (this is particularly relevant for active items)
- The corresponding "cache" values are automatically added to the item, so you don't need to specify those as well.
* Add new Vanilla Tweaks option "Disable exit prompt", which disables prompt pop-up when you try to exit the game from title menu.
* Custom curse icons can now be applied to custom curses
- Custom graphics can be defined in mapitemicons.anm2, placed in modName/content/gfx folder, with one frame per curse entry on animation curses, otherwise all icons from the mod will be empty by default
- Recommended settings for curse frame is 16x16 and centered around the origin (position set to 0, 0, pivot to 8, 8)
Fixes:
* Fixed an issue with luamod autocomplete not displaying all the available options
* Fixed an issue where modded items' crafting quality was set to 0 if not explicitly defined in the XML.
* Fixed Isaac.SetIcon sometimes failing after being called too many times.
* Players can no longer get stuck with buggy heart containers when changed to soul/bone heart health types (they get converted by default).
* Fixed player:Revive reviving The Forgotten with a bugged half soul heart that cannot be removed.
* Fixed a possible error when a lua error occurs during a custom callback that uses a table as its callback ID.
* Entity:
- Fixed GetPredictedTargetPosition returning unusable data.
* EntityPlayer:
- SetBagOfCraftingSlot / SetBagOfCraftingContent now automatically recalculate the crafting output & shift bag contents if empty spaces are added in the middle.
- Fixed SetFootprintColor crashing
- Fixed an issue where SetMegaBlastDuration was not updating the laser duration if it existed
- Fixed FriendBallEnemy accessor/setter
* ItemConfig_Costume:
- Fixed SkinColor attribute (now provides a valid int and can be modified)
* Level:
- TryPlaceRoom & related functions no longer consider a room placement valid if the only neighbor would be a secret room and "AllowSpecialNeighbors" is false.
- TryPlaceRoom(AtDoor) no longer automatically unlocks the door to the new room if placed adjacent to the player's current room.
* RoomTransition:
- Fixed StartBossIntro crash on call if room index for room transition is invalid.
* ModCallbacks:
- Fixed returning false on MC_PRE_PLAYER_ADD_CARD/PILL not preventing the card/pill being added as intended.
- Fixed the float DamageAmount attribute in MC(_POST)_GRID_HURT_DAMAGE
- Fixed MC_POST_ENTITY_TAKE_DMG sometimes providing 0 for players
- Fixed MC_PRE/POST_GRID_ENTITY_TELEPORTER_RENDER not running
- Fixed the position passed by MC_PRE/POST_PLAYERHUD_RENDER_HEARTS for co-op Esaus in REP+
* XMLData:
- Fixed an issue where entry names starting with numbers were not properly resolved for parameters
- Fixed an isue with ModData not displaying the extra REPENTOGON attributes (enabled/fulldirectory/etc)
- Fixed an issue with indev or pirated mods with repeated ids not showing up in luamod or in XMLData
* ImGui:
- Fixed RemoveElement not working on elements created with AddInputColor.
- Fixed Render callbacks of window elements being executed even if the window is not visible
- Fixed ImGui closing unexpectedly when pressing enter and the console window is not enabled
- Fixed ImGui.ImGuiToWorld() and ImGui.WorldToImGui() calls not taking the position arguments as intended
* Pathfinder:
- Many methods that did not work properly have been fixed
- Use Entity[Familiar/NPC]:GetPathfinder to access these fixes
- (EntityNPC.Pathfinder has been left unaffected for existing mod compatibility)
* GridEntity
- Fixed HurtDamage crashing
* Console
- Fixed a crash with RegisterMacro if no parameters were passed into it.
* Misc:
- Modded characters locked behind achievements no longer appear in the local co-op wheel.
Modified:
* EntityFamiliar:
- GetPathFinder -> GetPathfinder
- bool, table TryAimAtMarkedTarget(Vector AimDirection = nil, Direction Direction = Direction.NO_DIRECTION, Vector TargetPos = nil)
Return true if player's mark from Marked or Eye of the Occult/Gello target exists, false otherwise.
Return a table containing the changed AimDirection, Direction, and TargetPos.
The legacy function signature has been kept and should now properly return the changed TargetPos.
* EntityPlayer:
- DropCollectible now returns the spawned pedestal if one was spawned, as intended
- SwapForgottenForm returns boolean, depending if Forgotten/Soul form was switched or not.
- GetSmeltedTrinkets now accepts an optional table parameter, a list of trinket IDs, to use as a filter for better performance
- TryAddToBagOfCrafting now returns a boolean (true if something was added to the bag)
- UseActiveItem now returns a bitmask (UseActiveItemResultFlag.DISCHARGE and/or UseActiveItemResultFlag.REMOVE, or 0)
- Player no longer leaves a pee/blood puddle when entering a new room when the health type is set to HealthType.LOST/NO_HEALTH
* EntityNPC:
- boolean ReplaceSpritesheet
* Level:
- TryPlaceRoom(AtDoor) no longer plays the key unlock sound if a room is created that connects to the player's current room.
* ImGui:
- Adding an element with the same id as an existing one will now replace the existing element instead of throwing an error.
- If an error is caused by a callback, imgui will now properly throw an error
* ModCallbacks:
- MC_POST_PLAYER_TRIGGER_EFFECT_REMOVED(EntityPlayer Player, int Count)
Added Count argument (how many instances of this effect were removed)
Can now use ItemConfigItem as an optional param.
- MC_POST_ROOM_TRIGGER_EFFECT_REMOVED
Can now use ItemConfigItem as an optional param.
- MC_PRE_MOD_UNLOAD(Mod, bool ShuttingDown)
Added boolean argument that identifies if it is running due to game shutdown
Now runs earlier during shutdown, so code is less likely to crash
- MC_POST_CURSE_EVAL
Returning a value will now pass the modified curse mask along to the next callback instead of ending the callback early.
- MC_PRE_ADD_COLLECTIBLE
Returning a value to modify the collectible being added will now pass that ID along to other callbacks instead of stopping.
- MC_PRE_PLAYERHUD_RENDER_ACTIVE_ITEM
Added CropOffset field (Vector, defines rectangle area of the active item image that will rendered in active slot)
- MC_POST_PLAYER_NEW_LEVEL
Added PostLevelInitFinished argument
- MC_GET_PILL_EFFECT
Added EntityPlayer argument
- MC_POST_ENTITY_KILL
Added EntityRef argument (which entity killed this one)
* reloadshaders command will now reload custom anm2 shaders
* Daily goal path icon will now be displayed on Mega Satan daily runs.
* Fixed "luareset" command executing scripts from not loaded mods
/newline/
/versionseparator/
v1.0.12.e -
Fixes:
* Macs and old systems should now be compatible with REPENTOGON (we no longer use OGL 3)
/newline/
/versionseparator/
v1.0.12.d -
Fixes:
* Fix unsupported versions not running the repentogon update (which could make them be stuck and be forced to manually update in the future)
/newline/
/versionseparator/
v1.0.12.c -
Fixes:
* Fix loss of items in Mom's chase when playing coop or 2 player chaarcters like J&E
/newline/
/versionseparator/
v1.0.12.b -
Fixes:
* Fix various regressions involving status effects introduced by 1.0.12
/newline/
/versionseparator/
v1.0.12.a -
* The changelogs menu has been revamped. Use the left and right arrow keys to look between versions.
Additions:
* Ambush:
- [Get/Set]MaxBossChallengeWaves()
- Allows changing the number of waves in a boss challenge room
Fixes:
* Boss challenge rooms wave count no longer accidentally tied to normal challenge room wave count (ie, now two instead of three)
/newline/
/versionseparator/
v1.0.12 -
Additions:
* Add new Vanilla Tweaks option "Console Autofill Limit", which determines the number of autocomplete items that are displayed in the debug console.
* Level:
- CanPlaceRoom(RoomConfigRoom, int GridIndex, int Dimension = -1, bool AllowMultipleDoors = true, bool AllowSpecialNeighbors = false, bool AllowNoNeighbors = false)
Returns true if the room would be able to fit at this location.
- TryPlaceRoom(RoomConfigRoom, int GridIndex, int Dimension = -1, int Seed = 0, bool AllowMultipleDoors = true, bool AllowSpecialNeighbors = false, bool AllowNoNeighbors = false)
Will only place the room if it can fit and all doors can be successfully connected to neighboring rooms.
If successful, returns the new RoomDescriptor, returns nil otherwise.
If a seed of nil or 0 is provided, a seed will be auto-generated based on the location, room shape, and level seed.
Boolean params are additional safeties that can be enabled or disabled:
AllowMultipleDoors - Set to false to only allow successful placement if the room would only have one door (for placing special rooms).
AllowSpecialNeighbors - Set to true to allow connections to existing special rooms (note secret rooms are always allowed, but boss rooms are never allowed).
AllowNoNeighbors - Set to true to allow placing the room out in the void with no neighbors.
- CanPlaceRoomAtDoor(RoomConfigRoom, RoomDescriptor, DoorSlot, bool AllowMultipleDoors = true, bool AllowSpecialNeighbors = false)
Returns true if the room could be successfully placed connected to the specified DoorSlot of an existing room.
- TryPlaceRoomAtDoor(RoomConfigRoom, RoomDescriptor, DoorSlot, int Seed = 0, bool AllowMultipleDoors = true, bool AllowSpecialNeighbors = false)
Attempts to place the room connected to an existing room via the specified DoorSlot.
- FindValidRoomPlacementLocations(RoomConfigRoom, int Dimension = -1, bool AllowMultipleDoors = true, bool AllowSpecialNeighbors = false)
Returns a table of level GridIndexes that would be valid locations to place the given room.
- GetNeighboringRooms(int GridIndex, RoomShape, int Dimension = -1)
Returns a table map of DoorSlot->RoomDescriptor. Don't use ipairs!
Can be used to determine the neighbors of a room before even placing it.
Note that this does not give you any signal of if a room would actually fit, or if the neighbors would even allow a connection.
* StatsMenu:
- SetSelectedElement(int element)
- GetSelectedElement() - int
* Room:
- GetLRoom[Area/Tile]Desc() now return a usable class
- GetGridIndexByTile() now accepts a table of int[2]
* LRoomAreaDesc:
- Describes the corners of an L-room shape (as divided horizontally into two rectangles), in worldspace
- Vector Get[High/Low][TopLeft/BottomRight]()
* LRoomTileDesc:
- Describes the corners of an L-room shape (as divided horizontally into two rectangles), in grid coordinates
- int[2] Get[High/Low][TopLeft/BottomRight]()
- int[2] GetRandomTile(Seed)
- Can use Room:GetGridIndexByTile() to retrieve grid idx at these coordinates
* RoomDescriptor:
- GetDimension() - int
- GetNeighboringRooms()
Returns a table map of DoorSlot->RoomDescriptor. Don't use ipairs!
* ItemConfigCard:
- Added weight and hidden parameter to cards, both can be specified in pocketitems.xml
- Added the ability to specify a custom "availability condition" to evaluate when the game checks if a card is available.
- Hidden
- InitialWeight
- Weight - can be modified
- GetAvailabilityCondition()
- SetAvailabilityCondition(function)
- ClearAvailabilityCondition()
* Sprite:
- SetOverlayLayerFrame(int Layer, int Frame) - SetLayerFrame for overlays
- GetLayerFrameData(int Layer) - Returns the current AnimationFrame for the given layer.
- GetOverlayLayerFrameData(int Layer) - Same as above for the overlay animation.
* AnimationFrame:
- GetStartFrame()
- GetEndFrame()
* Point:
- [Get/Set]Color() - Allows setting a color per-Point; colors are lerped between points
- [Get/Set]IsWorldSpace() - Automatically converts this Point's position from worldspace to screenspace when rendering
* ModCallbacks:
- MC_PRE_GLOWING_HOURGLASS_SAVE/LOAD (int Slot)
Called before the Glowing Hourglass state is saved/loaded
* PersistentGameData:
- AddBestiaryKill(EntityType, Variant = 0)
- AddBossKilled(BossType)
- IsBossKilled(BossType)
* EntityPlayer:
- GetMaxCoins() - int
- GetMaxKeys() - int
- GetMaxBombs() - int
* EntitySlot:
- GetPrizeCollectible() - int
* New "customcache" tags (for items.xml and MC_EVALUATE_CUSTOM_CACHE):
- "maxcoins"
- "maxkeys"
- "maxbombs"
/newline/
Modified:
* Beam:
- Beams now have an inherent Sprite object, no longer prone to losing its Sprite reference
- Changes made to the Sprite provided in the constructor will not be reflected in the Beam, and vis-versa
- Wrap[S/T]Mode are automatically set to proper values for the spritesheet to loop vertically
* ModCallbacks:
- MC_POST_PICKUP_SELECTION
Additionally passes "RequestedVariant", "RequestedSubType" and "RNG".
A third bool argument can be included in the return table to specify wether or not you want to let the callback continue execution after the update to Variant and SubType.
* "Hush AI Fixes" patch will no longer be applied during daily runs.
* Deal rooms with variants above 99 will now also generate in Red Rooms
* Hold SHIFT of the DROP key to scroll faster through the main menu changelog
/newline/
Fixes:
- Fixed a vanilla bug that caused wisps from destroyed Mystery Gift/Eden's Soul wisps to spawn even after a run restart.
- Fixed HUD:GetCoopMenuSprite() returning invalid data
- Fixed EntityPlayer:AddActiveCharge() incorrectly allowing overcharge when adding charge to all slots at the same time (with -1 given as the slot)
/newline/
/versionseparator/
v1.0.11c -
Additions:
* CharacterMenu:
- [Get/Set]ActiveStatus()
- CharacterMenuStatus enum
/newline/
Fixes:
- Fixed vanilla game crash caused by Hornfel trying to enter new door after losing minecart.
- Fixed SetRail index checks
/newline/
/versionseparator/
v1.0.11b -
Bug fixes:
- Fixed a crash that could occur randomly when using custom item pools
/newline/
/versionseparator/
v1.0.11a -
Bug fixes:
- Fixed a division by zero that occured when shuffling an empty item pool
/newline/
/versionseparator/
v1.0.11 -
Additions:
* Itempools:
- Added support for new custom itempools through itempools.xml on the content folder
- Isaac.GetPoolIdByName(poolName) - returns the id of a given custom pool. Returns -1 if the pool is not found.
- Room:SetItemPool(ItemPoolType PoolType) - Sets the pool to use when the game needs to generate random collectibles in the current room.
- Room:GetItemPool(int Seed, boolean Raw) - Retrieves the pooltype the game would use to generate random collectibles in the current room.
- ItemPool:GetNumItemPools() - Retrieves the total number of itempools in the game, including custom itempools.
* GenericPrompt:
- GenericPrompt constructor
- Initialize(boolean SmallPrompt = false)
- Show()
- IsActive()
- Update(boolean ProcessInput)
- Render()
- SetText(string Text1 = "", string Text2 = "", string Text3 = "", string Text4 = "", string Text5 = "")
- GetSprite()
- GetCurrentSelection() - (0 - No, 1 - Yes)
- GetSubmittedSelection() - (0 - None, 1 - Yes, 2 - No)
* ModCallbacks:
- POST versions of MC_PRE_PLAYER_ADD/REMOVE_COSTUME
- MC_POST_FORCE_PILL_EFFECT
- MC_EVALUATE_CUSTOM_CACHE(Player, CustomCacheTag, float value)
Cache-style evaluation for custom player attributes.
Return a number to modify the value. Modified values are passed to the next callback.
CustomCacheTags must always be all lowercase.
Optional param: CustomCacheTag
- MC_EVALUATE_FAMILIAR_MULTIPLIER(Familiar, float mult, Player)
Called when a familiar's cached multiplier needs to be re-evaluated.
Return a number to modify the multiplier. Modified values are passed to the next callback.
Optional param: FamiliarVariant
* EntityPlayer:
- GetMovingBoxContents()
- GetTearDisplacement() - Returns the player's TearDisplacement value, used to check what eye the player is shooting from. 1 means that the last shot was from the right eye, -1 means the opposite.
- AddCustomCacheTag(string OR {string, string, ...}, bool evaluateItemsNow) - Add CustomCacheTag(s) to be evaluated next time EvaluateItems runs (which is right now, if the optional boolean is passed).
- GetCustomCacheValue(string CustomCacheTag) - Returns the current cached value for the specified CustomCacheTag. Will return 0 by default if the provided tag has not been evaluated.
* EntityFamiliar:
- GetMultiplier() - Returns the "multiplier" for the familiar, from effects such as BFFs or Hive Mind. Typically used to multiply things such as familiar damage.
- InvalidateCachedMultiplier() - Makes it so that the next time GetMultiplier is called, MC_EVALUATE_FAMILIAR_MULTIPLIER is triggered to recalculate/allow modifying the multiplier.
* EntityNPC:
- SetFlyingOverride(bool) - Sets an override to the return value of IsFlying, which is normally based on EntityGridCollisionClass. Can be used to make grounded enemies ignore creep, or flying enemies get hit by creep.
- ClearFlyingOverride() - Removes any value set by SetFlyingOverride.
- TrySplit(float DefaultDamage, EntityRef Source, DoScreenEffects = true)
- ReplaceSpritesheet(int LayedId, string PngFilename, bool LoadGraphics = false) - Appends _champion/stage suffix to PngFilename if possible.
* EntityLaser:
- RecalculateSamplesNextUpdate() - Requests the laser's shape to be fully recalculated next time it updates. Can be used to force the laser to instantly change its MaxDistance/Radius instead of transitioning to it. No effect for OneHit or non-sample lasers.
- IsMultidimensionalTouched()
- [Is/Set]PrismTouched()
* EntityTear:
- [Is/Set]MultidimensionalTouched()
- [Is/Set]PrismTouched()
* EntityBomb:
- [Is/Set]PrismTouched()
* EntityKnife:
- [Is/Set]MultidimensionalTouched()
- [Is/Set]PrismTouched()
* EntityPickup:
- TriggerTheresOptionsPickup() - Removes pickups with the same option group (OptionsPickupIndex) as the target pickup.
* LayerState:
- GetFlip[X/Y](), SetFlip[X/Y]()
* Game:
- GetGenericPrompt()
* Level:
- GetMyosotisPickups() - returns the pickups that will be transferred to the next floor by the myosotis trinket effect
* ItemConfigItem:
- HasCustomCacheTag
- GetCustomCacheTags
* Added support for a "customcache" attribute in items.xml
- Formatted as a space-separated list of string tags, same as other similar attributes.
- Capitalization is ignored - tags are converted to all lowercase.
- Whenever an item/trinket/effect is added or removed, triggers MC_EVALUATE_CUSTOM_CACHE on the player for each tag specified for that item.
- MC_EVALUATE_CUSTOM_CACHE will evaluate a number value (starts at 0 by default) which can be retrieved afterwards with player:GetCustomCacheValue(tag)
- Every tag that exists on at least one item in items.xml will also be triggered by CacheFlag.CACHE_ALL
- REPENTOGON adds one custom cache tag (so far): "familiarmultiplier". Note that this one does not trigger MC_EVALUATE_CUSTOM_CACHE, instead triggering MC_EVALUATE_FAMILIAR_MULTIPLIER for each familiar.
/newline/
Fixes:
- Fixed the game getting permanantly stuck trying to generate an ascent floor if a modded boss room has certain door layouts
- Fix a vanilla bug that caused Hush's laser attack to ignore a room's slowdown state and always chase the player at full speed
- Fix ???/Blue Womb rooms generating in The Void even when not using Better Void Generation
- Fix Void Portal rooms potentially not being generated in The Void
- Fix room weights not correctly being reset when reseeding in The Void
- Temporarily disable modified RoomDescriptor.OverrideData handling to prevent potential cases of it not being properly replaced
- Fix Isaac's Heart being immune to lasers
/newline/
/versionseparator/
v1.0.10c -
Additions:
* RoomDescriptor:
InitSeeds(RNG)
* ModCallbacks:
- MC_PRE_PLAYER_ADD_COSTUME(ItemConfigItem, Player, ItemStateOnly)
Called before the costume is added to the player. Return ItemConfigItem to replace the costume or true to cancel adding it entirely.
- MC_PRE_PLAYER_REMOVE_COSTUME(ItemConfigItem, Player)
Called before the costume is removed from the player. Return true to cancel the removal.
/newline/
* Fixes:
- Fixed a severe issue with Isaac.PlayCutscene() causing potential corruption when called for custom cutscene.
- EntityPlayer:SetImmaculateConceptionState(i) now automatically clamps to valid values only [0,14] to avoid crashes.
- Fixed binder for EntityPlayer:DropCollectibleByHistoryIndex which caused crashes on call.
- Fixed an issue in ItemPool:GetCollectible that prevented passing ItemPoolType.POOL_NULL.
/newline/
Modified:
* RoomConfigHolder:
- GetRoomByStageTypeAndVariant(StbType, Type, Variant, Mode = -1)
* Re-enabled "Extra debug render for FindInRadius" option.
/newline/
/versionseparator/
v1.0.10b -
Modified:
* MusicManager:
PlayJingle(Music ID, int Duration)
* Fixes:
- Disabled the new Debug find in radius feature until further notice, since it causes issues on some vanilla calls (Ex: Evil Eye)
* Room:TrySpawnBlueWombTime now checks Game TimeCounter instead of FrameCount, consistent with TrySpawnBossRushDoor and likely the intended behavior
/newline/
/versionseparator/
v1.0.10a -
Additions:
* EntityPlayer:
- SetBlackHeart(int BlackHeart)
- GetCambionFamiliarFlags()
- SetCambionFamiliarFlags(CambionFamiliarFlag flags)
* ModCallbacks:
- MC_PRE_FORTUNE_DISPLAY
Called before a fortune paper is displayed.
- MC_PRE_ITEM_TEXT_DISPLAY (title, subtitle, isSticky, isCurseDisplay)
Called before an item text is displayed (such as with picking up an item, Poke Go, stage title, etc.)
- PRE_GET_RANDOM_ROOM_INDEX(int RoomIndex, bool IAmErrorRoom, integer Seed)
Return integer to overwrite target room index.
- MC_POST_GLOWING_HOURGLASS_SAVE/LOAD (int Slot)
Called after the Glowing Hourglass state is saved/loaded
- MC_PRE/POST_PLAYER_ADD_CARD/PILL (EntityPlayer, Card/PillColor, PillCardSlot)
Called before/after a card/pill gets added to the player's inventory.
On PRE: Return a different ID to change the card/pill added, or false to cancel adding it entirely.
- MC_POST_PLAYER_REMOVE_CARD/PILL (EntityPlayer, Card/PillColor, PillCardSlot)
Called after a card/pill gets removed from the player's inventory by any means (dropped, direct removal, use, etc).
- MC_PRE/POST_PLAYER_COLLECT_CARD (EntityPlayer, EntityPickup)
Called before/after a player picks up a card/pill off the ground.
On PRE: Return false to prevent the card/pill from being picked up.
- MC_POST_PLAYER_DROP_CARD/PILL (EntityPlayer, EntityPickup, PillCardSlot)
Called after a player drops a card/pill onto the ground from their inventory.
- MC_PRE_PLAYER_GIVE_BIRTH_CAMBION/IMMACULATE (EntityPlayer, CambionFamiliarFlag)
Return false to cancel the familiar being added.
* EntityLaser:
- GetDamageMultiplier()
- SetDamageMultiplier(float Mult)
* EntityKnife:
- GetIsSwinging()
- SetIsSwinging(bool)
- GetIsSpinAttack()
- SetIsSpinAttack(bool)
* EntityFamiliar:
- GetItemConfig()
* PlayerHUDHeart:
- IsEternalHeartOverlayVisible()