Git Product home page Git Product logo

isaacdocs's People

Contributors

agentcucco avatar anumania avatar arcey-bot avatar catinsurance avatar dcavederps avatar epfly6 avatar fedew04 avatar filloax avatar ghgibonus avatar goldenstein64 avatar guwahavel avatar hybrid-x13 avatar im-tem avatar jsgnextortex avatar kittenchilly avatar laceous avatar meowlala avatar ocixcrom avatar pedroff1 avatar piber20 avatar saturnaliam avatar themonwil avatar thicco-catto avatar unit-03 avatar valentinlampriere avatar veeyu22 avatar wofsauge avatar xalum avatar yannickfricke avatar zamiell avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

isaacdocs's Issues

Improve post pickup selection

you might want to note in the MC_POST_PICKUP_SELECTION callback that
that EntityPickup is the type of the EntityPickup
and also, that it is bugged, and has zeroed values for all its values

Suggested clarifications and tweaks to callback descriptions after some testing

I just went through a long process of testing for extra variables and a few niche uses these callbacks could have, and some suggestions to make it clearer what the callbacks can and cant do, and to help prevent others from falling into issues I've had for years

wide scale suggestion:
add a column for optional arguments?

MC_USE_ITEM
make all mentions of CollectibleType link to the CollectibleType enum: https://moddingofisaac.com/docs/group__enums.html#ga2f1970a814e3e61deec58584b8b45a1e

MC_USE_CARD
change mentions of CardID to Card and make all mentions of Card link to the Card enum: https://moddingofisaac.com/docs/group__enums.html#ga98a2b239923441ea943de74af3208aa3

MC_FAMILIAR_UPDATE
change mentions of Entity_Familiar into EntityFamiliar and make all mentions of EntityFamiliar link to the EntityFamiliar page: https://moddingofisaac.com/docs/class_entity_familiar.html

MC_FAMILIAR_INIT
change mentions of Entity_Familiar into EntityFamiliar and make all mentions of EntityFamiliar link to the EntityFamiliar page: https://moddingofisaac.com/docs/class_entity_familiar.html

MC_EVALUATE_CACHE
make all mentions of CacheFlag link to the CacheFlag enum: https://moddingofisaac.com/docs/group__enums.html#ga32a9a3d125cc93d397abbd4f63f07f29
clarify that bitwise operators ARE NOT necessary to use on CacheFlag

MC_POST_PLAYER_INIT
clarify that a player variant can be specified as an optional argument with this callback (0 for main player, 1 for babies)

MC_USE_PILL
change mentions of PillEffectID to PillEffect and make all mentions of PillEffect link to the PillEffect enum: https://moddingofisaac.com/docs/group__enums.html#ga347f7740b9e122def6037b63c81a4c8b

MC_ENTITY_TAKE_DMG
make all mentions of DamageFlag link to the DamageFlag enum: https://moddingofisaac.com/docs/group__enums.html#ga32a9a3d125cc93d397abbd4f63f07f29
make all mentions of EntityType link to the EntityType enum: https://moddingofisaac.com/docs/group__enums.html#gad79a57ed3105eb60d991a1aeb4a9dc44
clarify that bitwise operators ARE necessary to use on CacheFlag

MC_POST_CURSE_EVAL
mention and link to the LevelCurse enum https://moddingofisaac.com/docs/group__enums.html#ggaf8502e81b66781fad715e772644d8a04ace6d5c0157cc563a0cb100a86550214b (perhaps in where it mentions what args it takes?)
no optional arguments can be specified

MC_INPUT_ACTION
make all mentions of InputHook link to the InputHook enum: https://moddingofisaac.com/docs/group__enums.html#ga0945400993463eece8f1c9856e24573c
make all mentions of ButtonAction link to the ButtonAction enum: https://moddingofisaac.com/docs/group__enums.html#gafa717ac273a5a382f7c01ef7afba1ee7
clarify that checking for or specifying a InputHook value can be used to determine if this callback was called through Input.IsActionTriggered, Input.IsActionPressed, or Input.GetActionValue
clarify that InputHook can be specified as an optional argument with this callback

MC_LEVEL_GENERATOR
clarify that this callback is unused and never gets called

MC_POST_GAME_STARTED
add a warning clarifying that this callback is triggered after new room and new level rather than before
no optional arguments can be specified

MC_POST_GAME_END
clarify the description, also correct false info: "This function gets called when the game over screen appears, or when the an ending starts playing. The boolean value is true when you died and got a game over, false when you won and got an ending."
no optional arguments can be specified

MC_PRE_GAME_EXIT
clarify the description, also add more info: "This function gets called when you quit a run. The boolean value is true when the game would normally create a continuable save, false when it wouldn't. Called twice when the game plays an ending."
no optional arguments can be specified

MC_POST_NEW_LEVEL
add a warning clarifying that this callback is triggered after new room rather than before
no optional arguments can be specified

MC_POST_NEW_ROOM
no optional arguments can be specified

MC_GET_CARD
change mentions of CurrentCard to Card and make all mentions of Card link to the Card enum: https://moddingofisaac.com/docs/group__enums.html#ga98a2b239923441ea943de74af3208aa3
change mentions of Playing to IncludePlayingCards for clarification
change mentions of Runes to IncludeRunes for clarification
no optional arguments can be specified

MC_EXECUTE_CMD
clarify that cmd is the first word of the console input, and params is the rest of the input
clarify that this doesn't work for default game commands, for example, spawn or debug
no optional arguments can be specified

MC_PRE_USE_ITEM
make all mentions of CollectibleType link to the CollectibleType enum: https://moddingofisaac.com/docs/group__enums.html#ga2f1970a814e3e61deec58584b8b45a1e
clarify that returning true will prevent default game code for this active item from happening
clarify that returning true will still discharge the item
clarify that CollectibleType can be specified as an optional argument with this callback to make it only work for the specific item

MC_PRE_ENTITY_SPAWN
make all mentions of EntityType link to the EntityType enum: https://moddingofisaac.com/docs/group__enums.html#gad79a57ed3105eb60d991a1aeb4a9dc44
change mentions of Vector2 to Vector and make all mentions of Vector link to the Vector page: https://moddingofisaac.com/docs/class_vector.html

MC_POST_FAMILIAR_RENDER
clarify that FamiliarVariant can be specified as an optional argument with this callback to make it only work for the specific familiar

MC_PRE_FAMILIAR_COLLISION
clarify that FamiliarVariant can be specified as an optional argument with this callback to make it only work for the specific familiar
add a warning specifying that this callback is bugged and can only be used once across all mods

MC_POST_NPC_INIT
clarify that EntityType can be specified as an optional argument with this callback to make it only work for that specific entity

MC_POST_NPC_RENDER
clarify that EntityType can be specified as an optional argument with this callback to make it only work for that specific entity

MC_POST_NPC_DEATH
this callback gets called AFTER the death animation plays, not before, at least when i tested with monstro
clarify that EntityType can be specified as an optional argument with this callback to make it only work for that specific entity

MC_PRE_NPC_COLLISION
clarify that EntityType can be specified as an optional argument with this callback to make it only work for that specific entity
add a warning specifying that this callback is bugged and can only be used once across all mods

MC_POST_PLAYER_INIT
clarify that a player variant can be specified as an optional argument with this callback (0 for main player, 1 for babies)

MC_PRE_PLAYER_COLLISION
clarify that a player variant can be specified as an optional argument with this callback (0 for main player, 1 for babies)
add a warning specifying that this callback is bugged and can only be used once across all mods

MC_POST_PICKUP_UPDATE
clarify that a pickup variant can be specified as an optional argument with this callback

MC_POST_PICKUP_RENDER
clarify that a pickup variant can be specified as an optional argument with this callback

MC_POST_PICKUP_SELECTION
add a warning mentioning that this callback triggers again when entering rooms with pickups that have already been selected, and when the player drops pickups (like trinkets and cards) from their inventory, making it useless for hooking into pickup pools
no optional arguments can be specified

MC_POST_TEAR_INIT
clarify that a tear variant can be specified as an optional argument with this callback

MC_POST_TEAR_UPDATE
clarify that a tear variant can be specified as an optional argument with this callback

MC_POST_TEAR_RENDER
clarify that a tear variant can be specified as an optional argument with this callback

MC_PRE_TEAR_COLLISION
clarify that a tear variant can be specified as an optional argument with this callback
add a warning specifying that this callback is bugged and can only be used once across all mods

MC_POST_PROJECTILE_INIT
clarify that a projectile variant can be specified as an optional argument with this callback

MC_POST_PROJECTILE_UPDATE
clarify that a projectile variant can be specified as an optional argument with this callback

MC_POST_PROJECTILE_RENDER
clarify that a projectile variant can be specified as an optional argument with this callback

MC_PRE_PROJECTILE_COLLISION
clarify that a projectile variant can be specified as an optional argument with this callback
add a warning specifying that this callback is bugged and can only be used once across all mods

MC_POST_LASER_INIT
clarify that a laser variant can be specified as an optional argument with this callback

MC_POST_LASER_UPDATE
clarify that a laser variant can be specified as an optional argument with this callback

MC_POST_LASER_RENDER
clarify that a laser variant can be specified as an optional argument with this callback

MC_POST_KNIFE_INIT
clarify that a subtype can be specified as an optional argument with this callback (YES, THATS SUBTYPE NOT VARIANT)

MC_POST_KNIFE_UPDATE
clarify that a subtype can be specified as an optional argument with this callback (YES, THATS SUBTYPE NOT VARIANT)

MC_POST_KNIFE_RENDER
clarify that a subtype can be specified as an optional argument with this callback (YES, THATS SUBTYPE NOT VARIANT)

MC_PRE_KNIFE_COLLISION
clarify that a subtype can be specified as an optional argument with this callback (YES, THATS SUBTYPE NOT VARIANT)
add a warning specifying that this callback is bugged and can only be used once across all mods

MC_POST_EFFECT_INIT
clarify that an effect variant can be specified as an optional argument with this callback

MC_POST_EFFECT_UPDATE
clarify that an effect variant can be specified as an optional argument with this callback

MC_POST_EFFECT_RENDER
clarify that an effect variant can be specified as an optional argument with this callback

MC_POST_BOMB_INIT
clarify that a bomb variant can be specified as an optional argument with this callback

MC_POST_BOMB_UPDATE
clarify that a bomb variant can be specified as an optional argument with this callback

MC_POST_BOMB_RENDER
clarify that a bomb variant can be specified as an optional argument with this callback

MC_PRE_BOMB_COLLISION
clarify that a bomb variant can be specified as an optional argument with this callback
add a warning specifying that this callback is bugged and can only be used once across all mods

MC_POST_FIRE_TEAR
add an actual description "Called when the player fires a tear, does not work for other kinds of weapons or with Incubus"
no optional arguments can be specified

MC_PRE_GET_COLLECTIBLE
clarify that the integer that can get returned corresponds to the CollectibleType enum: https://moddingofisaac.com/docs/group__enums.html#ga2f1970a814e3e61deec58584b8b45a1e
change mentions of PoolType to ItemPoolType and make all mentions of ItemPoolType link to the ItemPoolType enum: https://moddingofisaac.com/docs/group__enums.html#gaa8e780d5a9d7622188511c4c190000f1
no optional arguments can be specified

MC_POST_GET_COLLECTIBLE
make all mentions of CollectibleType link to the CollectibleType enum: https://moddingofisaac.com/docs/group__enums.html#ga2f1970a814e3e61deec58584b8b45a1e
change mentions of PoolType to ItemPoolType and make all mentions of ItemPoolType link to the ItemPoolType enum: https://moddingofisaac.com/docs/group__enums.html#gaa8e780d5a9d7622188511c4c190000f1
no optional arguments can be specified

MC_GET_PILL_COLOR
remove mention of PillColor SelectedPill, the first argument is actually the seed, there is no second argument. it's not bugged, the argument simply is never there. so change (PillColor SelectedPill, integer Seed) to just (integer Seed)
no optional arguments can be specified
a PillColor can be returned.

MC_GET_PILL_EFFECT
make all mentions of PillEffect link to the PillEffect enum: https://moddingofisaac.com/docs/group__enums.html#ga347f7740b9e122def6037b63c81a4c8b
make all mentions of PillColor link to the PillColor enum: https://moddingofisaac.com/docs/group__enums.html#gabaa0d4a2933c225fdc0e8f58f4b616d6
no optional arguments can be specified
a PillEffect can be returned.

MC_GET_TRINKET
make all mentions of TrinketType link to the TrinketType enum: https://moddingofisaac.com/docs/group__enums.html#gabd5e2c76ec4af0838568b19fd2b4e4f2
no optional arguments can be specified
a TrinketType can be returned.

MC_POST_ENTITY_REMOVE
clarify that this triggers in literally all removal cases, including when an entity is removed by the game as part of a room transition or the run ending
clarify that EntityType can be specified as an optional argument with this callback to make it only work for that specific entity

MC_POST_ENTITY_KILL
clarify that this triggers before the entity's death animation if it has one (tested with monstro)
clarify that EntityType can be specified as an optional argument with this callback to make it only work for that specific entity

MC_PRE_NPC_UPDATE
add a warning specifying that this callback is bugged and can only be used once across all mods
clarify that EntityType can be specified as an optional argument with this callback to make it only work for that specific entity

MC_PRE_SPAWN_CLEAN_AWARD
clarify that this triggers in every room that can be cleared, including boss rooms and angel rooms
clarify that this callback triggers even if the room wouldnt normally spawn a reward
this callback also handles stuff like the boss room spawning the trapdoor, returning true would cancel events like this
add a warning specifying that this callback is bugged and can only be used once across all mods
no optional arguments can be specified

MC_PRE_ROOM_ENTITY_SPAWN
no optional arguments can be specified

should I1, I2, V1, and V2's uses be documented?

i discovered The Frail sets I2 to 1 when he enters his second phase (the skeleton) and im wondering how this would be documented. i dont know if it would be out of scope, or too much info, or what. the notes for them could get massive if they document every base game npc

RoomDescriptorData bugs

type of the following is integer:

  • SpawnCount
  • Height
  • Doors
  • Width

Spawns is userdata, so therefore not implemented

Projectile "changed" informations

Projectiles can have two states: normal (default) and changed.
Changed state activates when projectile's frame count reaches value set in ChangeTimeout, after that its flags get changed to what was set in ChangeFlags and velocity will be resized to length set in ChangeVelocity.

Additional return behaviour for callbacks

@wofsauge some notes for the documentation
MC_NPC_UPDATE
MC_POST_UPDATE
MC_POST_RENDER
MC_USE_ITEM
MC_POST_PEFFECT_UPDATE
MC_USE_CARD
MC_FAMILIAR_UPDATE
MC_FAMILIAR_INIT
MC_EVALUATE_CACHE
MC_POST_PLAYER_INIT
MC_USE_PILL
MC_POST_CURSE_EVAL
MC_INPUT_ACTION
MC_POST_GAME_STARTED
MC_POST_GAME_END
MC_PRE_GAME_EXIT
MC_POST_NEW_LEVEL
MC_POST_NEW_ROOM
MC_GET_CARD
MC_EXECUTE_CMD
MC_PRE_ENTITY_SPAWN
MC_POST_FAMILIAR_RENDER
MC_POST_NPC_INIT
MC_POST_NPC_RENDER
MC_POST_NPC_DEATH
MC_POST_PLAYER_UPDATE
MC_POST_PLAYER_RENDER
MC_POST_PICKUP_INIT
MC_POST_PICKUP_UPDATE
MC_POST_PICKUP_RENDER
MC_POST_PICKUP_SELECTION
MC_POST_TEAR_INIT
MC_POST_TEAR_UPDATE
MC_POST_TEAR_RENDER
MC_POST_PROJECTILE_INIT
MC_POST_PROJECTILE_UPDATE
MC_POST_PROJECTILE_RENDER
MC_POST_LASER_INIT
MC_POST_LASER_UPDATE
MC_POST_LASER_RENDER
MC_POST_KNIFE_INIT
MC_POST_KNIFE_UPDATE
MC_POST_KNIFE_RENDER
MC_POST_EFFECT_INIT
MC_POST_EFFECT_UPDATE
MC_POST_EFFECT_RENDER
MC_POST_BOMB_INIT
MC_POST_BOMB_UPDATE
MC_POST_BOMB_RENDER
MC_POST_FIRE_TEAR
MC_PRE_GET_COLLECTIBLE
MC_POST_GET_COLLECTIBLE
MC_GET_PILL_COLOR
MC_GET_PILL_EFFECT
MC_GET_TRINKET
MC_POST_ENTITY_REMOVE
MC_POST_ENTITY_KILL
MC_PRE_ROOM_ENTITY_SPAWN
later callbacks continue regardless of return value

MC_ENTITY_TAKE_DMG
MC_PRE_USE_ITEM
returning any value besides nil prevents later callbacks from being called

MC_PRE_FAMILIAR_COLLISION
MC_PRE_NPC_COLLISION
MC_PRE_PLAYER_COLLISION
MC_PRE_PICKUP_COLLISION
MC_PRE_TEAR_COLLISION
MC_PRE_PROJECTILE_COLLISION
MC_PRE_KNIFE_COLLISION
MC_PRE_BOMB_COLLISION
MC_PRE_NPC_UPDATE
MC_PRE_SPAWN_CLEAN_AWARD
later callbacks never get called regardless of return value

other notes:

MC_POST_CURSE_EVAL
MC_GET_CARD
MC_POST_PICKUP_SELECTION
MC_PRE_GET_COLLECTIBLE
MC_POST_GET_COLLECTIBLE
MC_GET_PILL_COLOR
MC_GET_PILL_EFFECT
MC_GET_TRINKET
the last callback to return a valid return value wins out and overwrites previous callbacks' return values

MC_POST_CURSE_EVAL
MC_GET_CARD
MC_PRE_GET_COLLECTIBLE
MC_POST_GET_COLLECTIBLE
MC_GET_PILL_COLOR
MC_GET_PILL_EFFECT
MC_GET_TRINKET
returning something that isnt a number or nil crashes the game when called

MC_PRE_ENTITY_SPAWN
crashes when returning a table with incomplete values

MC_LEVEL_GENERATOR
gay

MC_GET_SHADER_PARAMS
idk how to test

MC_EXECUTE_CMD
returning a string prints it to the console

document ProjectilesMode

https://moddingofisaac.com/docs/class_entity_n_p_c.html#a6fbab8146c9cd0c7c64cdf0599a85a7f

0 : single projectile
1 : two projectiles (uses params.Spread)
2 : three projectiles (uses params.Spread)
3 : three projectiles (uses params.Spread, more spread out?)
4 : four projectiles (uses params.Spread)
5 : five projectiles (uses params.Spread)
6 : four projectiles in a + pattern (uses velocity.x as speed)
7 : four projectiles in a x pattern (uses velocity.x as speed)
8 : eight projectiles in a star pattern (uses velocity.x as speed)
9 : N projectiles in a circle (velocity.x = speed, velocity.y = N, params.FireDirectionLimit and params.DotProductLimit to fire in an arc only)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.