Class "Game"⚓︎
Info
This class can be accessed by using its constructor:
Example Code
1 |
|
Constructors⚓︎
Game ()⚓︎
Game Game ( )⚓︎
Returns a Game object.
Example Code
Example usage:
1 2 |
|
Functions⚓︎
Add·Devil·Room·Deal ()⚓︎
void AddDevilRoomDeal ( )⚓︎
Add·Encountered·Boss ()⚓︎
void AddEncounteredBoss ( EntityType Boss, int Variant )⚓︎
Add·Pixelation ()⚓︎
void AddPixelation ( int Duration )⚓︎
Triggers the effect of the "retro vision" pill.
Add·Stage·Without·Damage ()⚓︎
void AddStageWithoutDamage ( )⚓︎
Increases the ingame counter, that keeps track of the stages you cleared without taking damage. (useful for Devil deal manipulations)
Add·Stage·Without·Hearts·Picked ()⚓︎
void AddStageWithoutHeartsPicked ( )⚓︎
Increases the ingame counter, that keeps track of stages you cleared without picking up hearts.
Add·Treasure·Rooms·Visited ()⚓︎
void AddTreasureRoomsVisited ( )⚓︎
Bomb·Damage ()⚓︎
void BombDamage ( Vector Position, float Damage, float Radius, boolean LineCheck = true, Entity Source = nil, TearFlags TearFlags = TearFlags.TEAR_NORMAL, int DamageFlags = DamageFlags.DAMAGE_EXPLOSION, boolean DamageSource = false )⚓︎
Bomb·Explosion·Effects ()⚓︎
void BombExplosionEffects ( Vector Position, float Damage, TearFlags TearFlags = TearFlags.TEAR_NORMAL, Color Color = Color.Default, Entity Source = nil, float RadiusMult = 1, boolean LineCheck = true, boolean DamageSource = false, int DamageFlags = DamageFlags.DAMAGE_EXPLOSION )⚓︎
The complete bomb explosion package: Do damage, spawn boomgraphics, and apply tearflag-based effects.
Bomb·Tearflag·Effects ()⚓︎
void BombTearflagEffects ( Vector Position, float Radius, TearFlags TearFlags, Entity Source = nil, float RadiusMult = 1)⚓︎
Does bomb-exclusive special effects.
Butter·Bean·Fart ()⚓︎
void ButterBeanFart ( Vector Position, float Radius, Entity Source, boolean ShowEffect, boolean DoSuperKnockback )⚓︎
Change·Room ()⚓︎
void ChangeRoom ( int RoomIndex, int Dimension = -1 )⚓︎
This function should be used over Level.ChangeRoom
because that function will not update the fxlayers properly.
Dimension Info
Dimension: ID of the dimension to get the room from
1 2 3 4 |
|
Charm·Fart ()⚓︎
void CharmFart ( Vector Position, float Radius, Entity Source )⚓︎
Clear·Donation·Mod·Angel ()⚓︎
void ClearDonationModAngel ( )⚓︎
Clear·Donation·Mod·Greed ()⚓︎
void ClearDonationModGreed ( )⚓︎
Clear·Stages·Without·Damage ()⚓︎
void ClearStagesWithoutDamage ( )⚓︎
Sets the counter for stages cleared without damage to 0.
Clear·Stages·Without·Hearts·Picked ()⚓︎
void ClearStagesWithoutHeartsPicked ( )⚓︎
Sets the counter for stages cleared without picking up hearts to 0.
Darken ()⚓︎
void Darken ( float Darkness, int Timeout )⚓︎
Darkens the room. This is the function that is called internally during The Lamb fight or when Dice Rooms are activated.
Donate·Angel ()⚓︎
void DonateAngel ( int Donate )⚓︎
Donating 10 coins to a donation machine will increase the odds of an Angel Room if you haven't taken a devil deal. This simulates that behavior without actually adding coins to the donation machine.
Donate·Greed ()⚓︎
void DonateGreed ( int Donate )⚓︎
End ()⚓︎
void End ( Ending Ending )⚓︎
Ending notes
1: Game over "Dear Diary" (exit/restart)
2: Mom / Epilogue (movie)
3: Mom's Heart / End 1/2/3/4/5/6/7/8/9/10/11 (movie) or just Credits depending on context
4: Satan / End 12 (movie)
5: Isaac / End 13 (movie)
6: The Lamb / End 15 (movie)
7: ??? / End 14 (movie)
8: Mega Satan / End 16 (movie)
9: Greed / End 18 (movie)
10: Hush / End 17 (movie)
11: Delirium / End 20 (movie)
12: Greedier / End 19 (movie)
13: Mother / End 21 (movie)
14: The Beast / Final (movie)
Successful endings increment your win streak. If you pass a bad number like 0 then you can artificially increase your win streak as much as you want.
Fadein ()⚓︎
void Fadein ( float Speed )⚓︎
Fadeout ()⚓︎
void Fadeout ( float Speed, FadeoutTarget Target )⚓︎
Notes
FadeoutTarget types:
0: File Select Menu
1: File Selected Menu (New run, Start game, etc.)
2: Title
3: New Game (Starts a new run)
4: Victory lap
Fart ()⚓︎
void Fart ( Vector Position, float Radius = 85, Entity Source = nil, float FartScale = 1, int FartSubType = 0, Color FartColor = Color.Default )⚓︎
Finish·Challenge ()⚓︎
void FinishChallenge ( )⚓︎
Get·Ambush ()⚓︎
Ambush GetAmbush ( )⚓︎
Bug
Since it returns UserData, this function is unusable and therefore broken.
Get·Darkness·Modifier ()⚓︎
float GetDarknessModifier ( )⚓︎
Get·Devil·Room·Deals ()⚓︎
int GetDevilRoomDeals ( )⚓︎
Get·Donation·Mod·Angel ()⚓︎
int GetDonationModAngel ( )⚓︎
Get the value that indicates the angel-counter of a shop-donation maschine. This Stat increases everytime you donate to a shop. A higher number grants a few advantages.
Get·Donation·Mod·Greed ()⚓︎
int GetDonationModGreed ( )⚓︎
Get·Font ()⚓︎
Font GetFont ( )⚓︎
Get·Frame·Count ()⚓︎
int GetFrameCount ( )⚓︎
Returns the number of frames the gameplay is actively running. Pauses are therefore not included!
1 second equals 30 frames.
This function therefore works drastically different than Isaac.GetFrameCount()
Example Code
This code returns hours, minutes, seconds, and milliseconds of the game running actively:
1 2 3 4 5 |
|
Get·Greed·Boss·Wave·Num ()⚓︎
int GetGreedBossWaveNum ( )⚓︎
Get·Greed·Waves·Num ()⚓︎
int GetGreedWavesNum ( )⚓︎
Get·HUD ()⚓︎
HUD GetHUD ( )⚓︎
Get·Item·Overlay ()⚓︎
ItemOverlay GetItemOverlay ( )⚓︎
Bug
Since it returns UserData, this function is unusable and therefore broken.
Get·Item·Pool ()⚓︎
ItemPool GetItemPool ( )⚓︎
Get·Last·Devil·Room·Stage ()⚓︎
LevelStage GetLastDevilRoomStage ( )⚓︎
Bug
Since it returns UserData, this function is unusable and therefore broken.
Get·Last·Level·With·Damage ()⚓︎
LevelStage GetLastLevelWithDamage ( )⚓︎
Bug
Since it returns UserData, this function is unusable and therefore broken.
Get·Last·Level·Without·Half·Hp ()⚓︎
LevelStage GetLastLevelWithoutHalfHp ( )⚓︎
Bug
Since it returns UserData, this function is unusable and therefore broken.
Get·Level ()⚓︎
Level GetLevel ( )⚓︎
Get·Nearest·Player ()⚓︎
EntityPlayer GetNearestPlayer ( Vector Pos )⚓︎
Get·Num·Encountered·Bosses ()⚓︎
int GetNumEncounteredBosses ( )⚓︎
Get·Num·Players ()⚓︎
int GetNumPlayers ( )⚓︎
Get·Player ()⚓︎
EntityPlayer GetPlayer ( int Index )⚓︎
Returns the EntityPlayer with the given index. This function can return nil
if the function is called before any player is initialized. If an index is given, that is not used, it will return the last player in the list.
This function is the same as Isaac.GetPlayer()
.
Get·Random·Player ()⚓︎
EntityPlayer GetRandomPlayer ( Vector Pos, float Radius )⚓︎
Get·Room ()⚓︎
Room GetRoom ( )⚓︎
Get·Screen·Shake·Countdown ()⚓︎
int GetScreenShakeCountdown ( )⚓︎
Get·Seeds ()⚓︎
Seeds GetSeeds ( )⚓︎
Get·Stages·Without·Damage ()⚓︎
int GetStagesWithoutDamage ( )⚓︎
Get·Stages·Without·Hearts·Picked ()⚓︎
int GetStagesWithoutHeartsPicked ( )⚓︎
Get·State·Flag ()⚓︎
boolean GetStateFlag ( GameStateFlag GameStateFlag )⚓︎
Get·Target·Darkness ()⚓︎
float GetTargetDarkness ( )⚓︎
Get·Treasure·Room·Visit·Count ()⚓︎
int GetTreasureRoomVisitCount ( )⚓︎
Get·Victory·Lap ()⚓︎
int GetVictoryLap ( )⚓︎
Has·Encountered·Boss ()⚓︎
boolean HasEncounteredBoss ( EntityType Boss, int Variant )⚓︎
Has·Hallucination ()⚓︎
boolean HasHallucination ( )⚓︎
Returns true if the Delirium animation (Static noise intersected with past gameplay fotage) is playing right now.
Is·Greed·Mode ()⚓︎
boolean IsGreedMode ( )⚓︎
Returns true if the current gamemode is set to Greed or Greedier mode.
To differentiate between Greed and Greedier mode, you need to use the Game().Difficulty
attribute.
Is·Paused ()⚓︎
boolean IsPaused ( )⚓︎
Returns true, if the game is in a state, where the player is unable to input any thing or the game logic is paused. This includes having the pause menu opened, being in room transitions/cutscenes or while displaying a "big book" animation.
Make·Shockwave ()⚓︎
void MakeShockwave ( Vector Position, float Amplitude, float Speed, int Duration )⚓︎
Move·To·Random·Room ()⚓︎
void MoveToRandomRoom ( boolean IAmErrorRoom, int Seed, EntityPlayer Player )⚓︎
Next·Victory·Lap ()⚓︎
void NextVictoryLap ( )⚓︎
Render ()⚓︎
void Render ( )⚓︎
Reroll·Enemy ()⚓︎
boolean RerollEnemy ( Entity e )⚓︎
Reroll·Level·Collectibles ()⚓︎
void RerollLevelCollectibles ( )⚓︎
Reroll·Level·Pickups ()⚓︎
void RerollLevelPickups ( int Seed )⚓︎
Set·Last·Devil·Room·Stage ()⚓︎
void SetLastDevilRoomStage ( LevelStage Stage )⚓︎
Set·Last·Level·With·Damage ()⚓︎
void SetLastLevelWithDamage ( LevelStage Stage )⚓︎
Set·Last·Level·Without·Half·Hp ()⚓︎
void SetLastLevelWithoutHalfHp ( LevelStage Stage )⚓︎
Set·State·Flag ()⚓︎
void SetStateFlag ( GameStateFlag GameStateFlag, boolean Val )⚓︎
Shake·Screen ()⚓︎
void ShakeScreen ( int Timeout )⚓︎
Show·Fortune ()⚓︎
void ShowFortune ( )⚓︎
Show·Hallucination ()⚓︎
void ShowHallucination ( int FrameCount, BackdropType Backdrop = BackdropType.NUM_BACKDROPS )⚓︎
Plays the Delirium animation (Static noise intersected with past gameplay fotage), which will also change the background of the current room.
Workaround Code for AB+ mods
This function was broken in AB+, so there was this implementation in order to recreate the effect.
This code emulated the effect of this function by hijacking the Delirious item effect
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
|
Show·Rule ()⚓︎
void ShowRule ( )⚓︎
Spawn ()⚓︎
Entity Spawn ( EntityType Type, int Variant, Vector Position, Vector Velocity, Entity Spawner, int SubType, int Seed )⚓︎
There are two spawn functions. Isaac.Spawn(), which spawns an entity with a random seed, and Game():Spawn() (this one), which spawns an entity with a specific seed. However due to a bug, Isaac.Spawn() has a chance to generate a seed of 0, which crashes the game. If you need to spawn an entity with a random seed, you should always use Game():Spawn() with a helper function that calls Random() and arbitrarily sets the seed to 1 when the seed is 0.
Example Code
This code spawns a Leech with specific seed.
1 2 3 4 5 6 7 8 9 |
|
Spawn·Entity·Desc ()⚓︎
EntityNPC SpawnEntityDesc ( EntityDesc desc, Vector Position, Entity Spawner )⚓︎
Spawn·Particles ()⚓︎
void SpawnParticles ( Vector Pos, EffectVariant ParticleType, int NumParticles, float Speed, Color Color = Color.Default, float Height = 100000, int SubType = 0 )⚓︎
Start·Room·Transition ()⚓︎
void StartRoomTransition ( int RoomIndex, Direction Direction, RoomTransitionAnim Animation = RoomTransitionAnim.WALK, EntityPlayer Player = nil, int Dimension = -1 )⚓︎
Note that if you use RoomTransitionAnim.PIXELATION
(2), you must not interrupt the effect (e.g. with another room transition or room change) once it starts playing. Otherwise, after around 11 interuptions, the "log.txt" will start to become spammed with "[ASSERT] - PushRenderTarget: stack overflow!". This is because internally, the game uses a finite buffer to store information about the effect, and if it is interrupted, the buffer will never be cleared.
Dimension Info
Dimension: ID of the dimension to get the room from
1 2 3 4 |
|
Notes
The boss vs screen overrides all of these transitions, however, using RoomTransitionAnim.DEATH_CERTIFICATE will make it so the player appears lying down after the vs screen and the game will be paused while they get up.
Bugs
The Direction variable is completely ignored at all times, with the game instead calculating the direction between the two rooms itself for the animation. The two rooms are the current room and the room of the RoomIndex. It has no impact on the doors either.
Start·Stage·Transition ()⚓︎
void StartStageTransition ( boolean SameStage, int TransitionOverride, EntityPlayer Player )⚓︎
Starts a transition animation, like the ones used when entering a trapdoor or light beam to reach the next stage.
SameStage
will cause the stage to be reseeded if set to true. Otherwise, the game will progress to the next stage. The next stage is selected based on the rules of transition internally defined.
- If GameStateFlag.STATE_SECRET_PATH is set, the transition will move towards the alternate path.
- If GameStateFlag.STATE_HEAVEN_PATH is set, and the current stage is Womb II / XL or ???, the transition will move towards Cathedral, otherwise it will move toward Sheol.
- If GameStateFlag.STATE_BACKWARDS_PATH is set, this will progress towards the next stage in the Ascent.
- If the current stage is Corpse II / XL, the transition will progress towards ???.
TransitionOverride
can be used to trigger special stage transitions that will progress to a stage that is not necessarily the next one available.
- 2: Sacrifice Room teleportation. Progress towards Dark Room regardless of current floor.
- 3: Void trapdoor. Progress towards The Void regardless of current floor.
- 4: unknown. Freeze all logic updates, but the console can still be opened.
- 5: Ascent transition. If
SameStage
is set to true, progress towards the Ascent version of the current floor (softlocks the game if the current floor doesn't have an Ascent version). IfSameStage
is set to false, move to the next stage (in the non Ascent path), and then enter the Ascent version of this new stage. - 6: Home Glowing Hourglass. Progress towards Home, regardless of the current floor.
Bug
Contrary to previous beliefs, this function will crash when not provided with an EntityPlayer. It is worth noting however, that the function, even when used correctly, is inconsistent and seems to sometimes crash for no reason. Reverse engineering the game shows that the Lua binder associated with this function improperly calls Game::StartStageTransition which results in a C++ stack corruption. As a result, correct calls to this function may or may not crash the game.
Update ()⚓︎
void Update ( )⚓︎
Update·Strange·Attractor ()⚓︎
void UpdateStrangeAttractor ( Vector Position, float Force = 10, float Radius = 250 )⚓︎
Variables⚓︎
Blue·Womb·Par·Time⚓︎
int BlueWombParTime⚓︎
Boss·Rush·Par·Time⚓︎
int BossRushParTime⚓︎
Number of frames of game time.
Challenge⚓︎
Challenge Challenge⚓︎
Difficulty⚓︎
const Difficulty Difficulty⚓︎
Screen·Shake·Offset⚓︎
const Vector ScreenShakeOffset⚓︎
Time·Counter⚓︎
int TimeCounter⚓︎
same as FrameCounter but can be modified, mostly used for timed events (bossrush, daily, ...) and not for timestepping