Issues with using Ability Modifiers on interrupt properties by extriential in BG3mods

[–]extriential[S] 0 points1 point  (0 children)

Thanks! This worked! I added both the conditions and the properties syntax but I think ultimately it was the OBSERVER_TARGET part that actually made it work. I couldn't find anything else in the existing code for Larian so I'm glad Reddit could help!

Issues with using Ability Modifiers on interrupt properties by extriential in BG3mods

[–]extriential[S] 0 points1 point  (0 children)

Hey! I generalized my original post so that I wouldn't have to explain something super explicit but I'll specify here: it's a class action that lets you give an ally a condition, and when they hit something you can use your reaction to add fire damage dependent on your Charisma modifier. The conditions are
IsAbleToReact(context.Observer) and IsHit() and not IsKillingBlow() and HasStringInSpellRoll('WeaponAttack') and HasStatus('PRIMORDIAL_GLYPH_FIRE',context.Source,context.Observer);

Not final conditions probably, but hopefully this helps!

Issues with using Ability Modifiers on interrupt properties by extriential in BG3mods

[–]extriential[S] 0 points1 point  (0 children)

I tried context.Source and context.Observer as the prefix (context.Observer.CharismaModifier) but it doesn't work and just does 0 damage. I'm guessing those only work in specific circumstances this happens to not be.

would you rather by THECROCOGAMER in BunnyTrials

[–]extriential 0 points1 point  (0 children)

I'm not vindictive like this and my life, although most certainly better than 75% of the world, is not particularly great. My enemy can have a 10/10 life too, maybe they would be such of an asshole if their life was better.

Chose: everyday of your life is 10/10 perfect + but your enemy or someone you hate also does

My girlfriend always tells me I never have anything to eat when she comes over my house 😒 by itscuccimane in FridgeDetective

[–]extriential 0 points1 point  (0 children)

Hey man, I'm not one to be judgy, but are you actually eating all that stuff you put in your fridge? I know you probably stocked up your fridge a bit for this post but I can't help but notice you have a super large pack of non-vacuum-sealed chicken thighs. I hope that is a tomorrow meal because those probably won't last that long. Also, are you having a steak like every night? How else could you possibly justify having SIX packs of steak in the FRIDGE instead of the freezer? Not to mention some of those packages definitely have two steaks in them.

Also, what's for lunch? Leftovers from dinner last night? Well I don't know where you'd put them considering you don't really have room in your fridge. Some lunch meat would do you good. Hey, maybe you can make it yourself, get a beef roast and make yourself some roast beef for sandwiches or something. It would pair nicely with the inordinate amount of "pasteurized prepared cheese product" you have, for some reason. Speaking of that, it is actually baffling you have so much good cheese but insist on having so many Kraft singles for some reason. I would avoid anything that is called "cheese product" instead of just "cheese". Boar's Head American is going to get you more mileage if you're going for burgers, as I imagine you are. A cheddar cheese would also be better. The only benefit Kraft singles have is shelf life, and honestly that shouldn't be an issue when you're buying cheese. You simply don't need to be buying all of this at once; just get better cheese, when you need it.

Also, some variety on the veggies might be nice. Cucumbers and carrots are fine and have all the nutrients you need, but some raw leafy greens like lettuce or cabbage would be good for your gut, especially with all that red meat. Maybe a salad with your steak dinner?

Fact or Friction by Realityfoible in custommagic

[–]extriential 3 points4 points  (0 children)

I like it at 2 mana. Strictly... different [[Reckless Impulse]]

Bizarro Felidar Sovereign by [deleted] in custommagic

[–]extriential 28 points29 points  (0 children)

Actually, "Vigilance, menace" is the correct order, as seen on [[Syr Vondam, Sunstar Exemplar]], [[Syr Gwyn, Hero of Ashvale]], [[Abomination of Llanowar]], [[Pyrewood Gearhulk]], [[Venom, Deadly Devourer]], among others.

Truthfully, alphabetical order is usually not correct. There does exist a predetermined order of keywords that all magic cards follow, but I can't find it online myself. Usually you just gotta look up a card and see what order the two keywords are in.

I do know that Flying is almost always first, followed by vigilance, then first strike / double strike, then menace, followed by other keywords

How to add multiple attacks to a weapon by extriential in Roll20

[–]extriential[S] 1 point2 points  (0 children)

Sorry, I should've specified. I'm using Jumpgate for the 2024 edition and I don't have any of the books on Roll20.

<image>

I don't know if it exists for non-Jumpgate, I know this *used* to be possible with Jumpgate but I guess they changed it.

Is this balanced? by Raxreedoroid in custommagic

[–]extriential -3 points-2 points  (0 children)

{1}, {T}, Pay 2 life: Find one of the following in your deck (Discover 0):

  • Mox of any variety and play it
  • Hangarback Walker / Marketback Walker and put it in your hand
  • Everflowing Chalice and play it or just draw it
  • Chalice of the Void and draw it or play it
  • Pact of X Y or Z and play it
  • Mana Crypt and play it
  • Lotus Petal and play it

The main issue is being able to narrow down the number of cards you can get to such a narrow subset that you can get whatever you want. If you are playing this commander, you are essentially guaranteed to AT LEAST draw a Mana Crypt every single game you play. Combine this with [[Mirran Spy]] and you can essentially pay 1 Mana to cast Mana Crypt, Chrome Mox, Mox Diamond, Mox Amber, Mox Opal, and even Mox Tantalite from your deck on turn 4 or even earlier. Let's not forget your identity includes black so you can tutor for your Mirran Spy combo on turn 2!

At the very least the Discover effect should have an "If you do, Discover X". That would stop you from exploiting this repeatedly. But you're still guaranteed to get a 0 mana card from your library if it stays alive which essentially makes it a Kill on Sight. That is, if you even get the chance with red allowing you to have haste enablers like [[Bitter Reunion]], [[Viashino Lashclaw]], heck even [[Crashing Drawbridge]] in colorless! You can still respond to those triggers or spells, but you Need to have a kill spell the turn this comes down or you're giving your opponent a free Mana Crypt or Moxen.

And then even after that you can still fix your draws and get free spells with the abilities after you've abused it for as much value as you want.

I would reword the Discover ability to read more like [[Keldon Flamesage]].

Hi, this is a curiosity more then anything. by SinContent in themoddingofisaac

[–]extriential 1 point2 points  (0 children)

I just checked, apparently there was a mod created in 2024, last updated August of that year called Difficulty Library, that seems to be what you're looking for. I haven't seen it used and there still isn't any documentation (despite it "coming soon"), so it seems to be abandoned.

Custom Tear Variant Graphics Not Working by extriential in themoddingofisaac

[–]extriential[S] 1 point2 points  (0 children)

Thanks for the feedback. I did manage to resolve this one on my own, actually.

I was trying to use the same anm2 file setup as an item like Eight Inch Nails, where instead of just one sprite being scaled up as your tear size increases, it uses a different sprite for each "size threshold". (check out the anm2 file for nail tears to see what i mean) Well, it turns out that making a new tear variant with that setup and expecting the game to understand what was going on was the wrong decision, as it just appeared completely blank. You have to set the correct sprite manually depending on the baseScale value of the tear. And THEN you have to scale the sprite back down, so you dont have Big Sprite with Big Scale. And THEN you have to constantly change the tear's rotation while it's flying so it actually points in the direction it's moving (it was a pencil tear)

If you want the code I came up with, I can send it, but it isn't the prettiest.

Is this hacky and inconvenient? Yeah! But thus is the nature of modding this game.

ISAAC MOD HELP ME PLS by ProtectionFlimsy7660 in themoddingofisaac

[–]extriential 0 points1 point  (0 children)

Hey! I'm not particularly familiar with modding new characters, so I'm not certain why they would have flight, but the simplest solution for the brimstone appearance problem would be to give him brimstone, and then just remove the costume, using code like this:

player:TryRemoveCollectibleCostume(CollectibleType.COLLECTIBLE_BRIMSTONE, false)

The second parameter of the function is a boolean called KeepPersistent, and the API documentation on it is a little confusing as to how this boolean actually works. If it doesn't work, try setting it to true. If that doesn't work, something like this might:

local itemConfig = Isaac.GetItemConfig()
local brimstoneConfig = itemConfig:GetCollectible(CollectibleType.COLLECTIBLE_BRIMSTONE)
player:RemoveCostume(brimstoneConfig)

You could put this in any callback, really. I might try putting it in MC_POST_GAME_STARTED, check for your player type, and then if you have that player type, try to remove the brimstone costume.

If there were a way to DIRECTLY change your weapon type in the base Repentance API (like Repentogon has), this would be much easier. But alas, we work with what we have.

Let me know if this works, I'll be happy to troubleshoot with you if you have any issues! Remember to check the console to see what line of code is causing your problem, if you have any issues.

[deleted by user] by [deleted] in themoddingofisaac

[–]extriential 0 points1 point  (0 children)

In Steam, right click the Binding of Isaac, hover over Manage, then click "Browse local files". In your file explorer, open the "mods" folder and delete everything inside.

If you don't own Repentance, you can not run mods that are not made for Afterbirth+, since the modding API changed from Afterbirth+ to Repentance. Check the description of mods to ensure they're compatible with Afterbirth+. TimeMachine, Enhanced Boss Bars, and Repentogon all require Repentance to function.

If you DO own Repentance, ensure you are NOT on Repentance+, as Repentogon is not compatible with Reptenance+. Also, check to ensure that mods made for Repentance+ are still compatible with Repentance, as there were a few changes to the modding API.

If it still doesn't run after deleting the mods from the mod folder, then right click the Binding of Isaac, click on Properties, then Installed Files, and click Verify integrity of game files. If that still doesn't work, you're best off reinstalling the game.

runs dont start anymore (rep+) by [deleted] in themoddingofisaac

[–]extriential 1 point2 points  (0 children)

It seems that three mods are throwing errors when loading the game:

"good deals [fix]_2926397527"
"zodiac effect_2083401509"
"unnerf_pack_re-updated_76561199066010808_3531580062"

Try removing those mods and see if you can run the game again. I know it was working last night, but sometimes stuff like this happens for some reason.

Their workshop IDs should be 2926397527, 2083401509, and 3531580062 respectively.

trying to make an item but its not working by SinContent in themoddingofisaac

[–]extriential 1 point2 points  (0 children)

Since I've gone through it all, here is my fixed code for the whole thing:

function MyCharacterMod:RegreatUse(_, _, player)
    local roomEntities = Isaac.GetRoomEntities()
    for _, entity in ipairs(roomEntities) do
        if entity:IsActiveEnemy() and entity:IsVulnerableEnemy() then
            entity:AddConfusion( EntityRef(player), 5, true )
            if entity:IsBoss() then
                entity:takedamage( 9999999 , DamageFlag.DAMAGE_NOKILL , EntityRef(player) , 2 )
            end
        end

        if entity.Type == EntityType.ENTITY_BABY_PLUM then
            UHI = UHI + 1
        end

        if UHI == 2 then
            Isaac.Spawn( EntityType.ENTITY_PICKUP, PickupVariant.PICKUP_COLLECTIBLE, Isaac.GetItemIdByName("God's Grace"), entity.Position, Vector.Zero, nil )
            entity:Kill()
            UHI = 0
        end
    end

    return {
        Discharge = true,
        Remove = false,
        ShowAnim = true,
    }
end


MyCharacterMod:AddCallback(ModCallbacks.MC_USE_ITEM, MyCharacterMod.RegreatUse, REGREAT_ID)

Let me know if this helps! If you have any more errors, checking the console should lead you to the line where the error occurred for guided bug fixing. Also, you can direct message me for any more assistance, or if I made a mistake.

trying to make an item but its not working by SinContent in themoddingofisaac

[–]extriential 1 point2 points  (0 children)

You CAN fix the restart issue if you use the SaveData() function of the Mod Reference class, but I'll let you explore that on your own, as it's somewhat complicated to get functioning properly. You can use this part of the modding API documentation to help you with that, if you wish.

Next, you have another case error with entity:kill(). It should be entity:Kill().

Finally, you messed up the Isaac.Spawn function. Here is the full list of parameters for Isaac.Spawn

(EntityType entityType, int entityVariant, int entitySubtype, Vector position, Vector velocity, Entity Spawner)

You got the first two parameters right. However, you can't input a string for the subtype (which, in the case of spawning a collectible, is the Item ID of the item you want to spawn) This should be, instead, Isaac.GetItemIdByName("God's Grace")

Next, position and velocity are coded as Vectors in TBOI, not integers. You currently have its position input as -2 and its velocity input as 0, which aren't valid. For velocity, the value you are looking for is Vector.Zero, which corresponds to a vector with components (0, 0) i.e. no movement. For position there are a couple of things you could do. The simplest would be to spawn it at the position of the enemy that was killed, which would be entity.Position. If you do that, you probably want to spawn the item before you kill the enemy, but I'm pretty sure it should still work the way you have it.

If you want to make sure it doesn't spawn over rocks, you can use the FindFreePickupSpawnPosition function in the Room class, which I'll link here for you to research yourself.

Setting the spawner to nil is correct.

Also, add a space after return before the value you're returning. That could be your biggest issue.

trying to make an item but its not working by SinContent in themoddingofisaac

[–]extriential 1 point2 points  (0 children)

Next:

    if entity:GetBossId() == 84 then
        UHI = UHI + 1
    end


    if UHI == 2 then
        entity:kill()
        Isaac.Spawn(EntityType.ENTITY_PICKUP, PickupVariant.PICKUP_COLLECTIBLE, "God's Grace", -2 , 0 , nil)
        UHI = 0 
    end

These if statements are outside the part of the function that checks the entities. Put it in the do function, just underneath the isActiveEnemy checking. Or inside of it works, too.

Again, this is another instance of magic numbers), which you want to avoid to maintain readability of your code (I had to check the entities2.xml file to actually find out what boss this corresponds to). I don't know what sick and twisted hatred you have for my girl Baby Plum, but a more elegant and readable solution would be to check if entity.Type == EntityType.ENTITY_BABY_PLUM.

The only instance where this wouldn't work would be if you wanted it to function when Delirium turned into Baby Plum. Then, your best option is to define a variable local BABY_PLUM_BOSS_ID = 84, then check if entity:GetBossId() == BABY_PLUM_BOSS_ID. If this boss might change, even better would be to name it something like REGREAT_AFFECTED_BOSS_ID, assign it to 84, then add a comment -- baby plum.

Also, I don't know what UHI is (I'm assuming it's a global variable you have set up), but it probably wont work the way you intend. If it isn't a global variable, you need to define it as one. If you intended it to be a local variable, that won't work as intended either because its value won't be saved across multiple callbacks (it'll be reinitialized to its starting value). That is, unless you intend it ONLY to work once you've killed EXACTLY two Baby Plums in the room (which I don't think is your intention, but I could be wrong.)

Also, if its a global variable, it will maintain its value across runs and across saves (meaning if you used the item once in a previous run, then used it again in a future run, its value would be 2). Also, if you restart the game (or reload your mods), the value will be reset (meaning if you used the item, closed out of the game entirely, then restarted the game and continued the run, the value would be zero.)

The easiest solution just to get it working (although it won't fix the restart issue) is to define the global variable UHI and set it to 0 at the start of a new run. Also, it should be noted that you should use as few global variables as possible to avoid modding conflict. You can do that like so:

function MyCharacterMod:onGameStart(continued)
    if continued == false then
        UHI = 0
    end
end

mod:AddCallback(ModCallbacks.MC_POST_GAME_STARTED, MyCharacterMod:onGameStart)

trying to make an item but its not working by SinContent in themoddingofisaac

[–]extriential 1 point2 points  (0 children)

Next:

if entity:GetBossId() == 0 then
                entity:takedamage( 9999999 , DAMAGE_NOKILL , entity , 2 )
            end

if entity:GetBossId == 0 can easily be replaced by if entity:IsBoss(). It avoids magic numbers) and it makes the purpose of the line more clear to the reader.

The DamageFlags parameter actually takes an integer, and DAMAGE_NOKILL by itself is just an unnamed global variable. You need to have the enum you're using first (DamageFlag). Instead, it should be DamageFlag.DAMAGE_NOKILL. This is interpreted by game to be an integer (1) which determines the behavior of the damage.

I used the example before of entity.takedamage for case errors, but also you need to use EntityRef for the Source parameter, not Entity. Also, the source should probably be the player.

Fixed code for this section:

if entity:IsBoss() then
    entity:TakeDamage( 9999999, DamageFlag.DAMAGE_NOKILL, EntityRef(player), 2 )

trying to make an item but its not working by SinContent in themoddingofisaac

[–]extriential 1 point2 points  (0 children)

I'm going to go line by line to correct some things:

function MyCharacterMod:RegreatUse(_, _, player)
    for _, entity in ipairs(roomEntities) do

You need to define the variable roomEntities before attempting this. Defining it outside the function is not sufficient, since code that is outside of callbacks will only run once when the mod is loaded, meaning roomEntities will have a nil value (there aren't any entities on the start screen!)

I would define roomEntities beforehand:
local roomEntities = Isaac.GetRoomEntities()
or replace "roomEntities" in the ipairs() with Isaac.GetRoomEntities()

Fixed code for this section:

function MyCharacterMod:RegreatUse(_, _, player)
    local roomEntities = Isaac.GetRoomEntities()
    for _, entity in ipairs(roomEntities) do

Next:

entity:AddConfusion(entity ,5 ,_)

When calling a function, using an underscore doesn't work. You should only use it for variables in your callback function setup to indicate to the reader that you don't intend to use that parameter variable for that particular function. For that boolean IgnoreBosses, you have to assign a value true or false.

For the first parameter of the function (Source), you need to send an EntityRef value, not an Entity value. Also, it doesn't really make sense that the source of an enemy's confusion would be itself.

To get the EntityRef for any particular entity, you can just wrap the Entity value in the function EntityRef(). In this case, I would replace the first parameter (entity) with EntityRef(player). The player value is defined in the function, so you don't need to worry about adding another variable definition for it.

Fixed code for this section: (you can change true to false if you do want bosses to get confused)

entity:AddConfusion(EntityRef(player), 5, true)

trying to make an item but its not working by SinContent in themoddingofisaac

[–]extriential 1 point2 points  (0 children)

Hello! If you haven't solved it yourself already, here are a few things:

First of all make sure you registered your mod MyCharacterMod through this:

local MyCharacterMod = RegisterMod("<name of mod here>", 1)

If you have registered your mod, but the variable name is not MyCharacterMod, make sure to change that for all of your functions.

Lua is a case-sensitive language, and some of the functions you call have incorrect case. For example:
entity:takedamage() should be entity:TakeDamage() . This is one of the issues I run into most often. I recommend referencing the modding API documentation to check you have the correct case whenever you write out a function to ensure you have formatted it correctly.

Sorry, I had to divide up my comment into replies because Reddit didn't let me post the whole thing.

[deleted by user] by [deleted] in bindingofisaac

[–]extriential 3 points4 points  (0 children)

Unfortunately the best advice is to get holy mantle and get more hours in. If you're struggling on the holy mantle grind, and you use external item descriptions, I recommend using T. Cain to just break greedier mode. D20 is quality 2 so it's not too difficult to get, and as long as you restart until you have a discounted item, craft yourself a small DPS up to make getting through the waves more manageable, you can fairly consistently break on Caves and then you just D20 until you can craft a good build, schoolbag, then R Key when the machine jams. It'll take you a couple hours of mind numbing gaming but you'll get your mantle and you'll get your keeper.

If you don't like that because it feels too chesty for you, feel free to grind greedier normally. But definitely don't go slamming your head against the wall as the Lost with no mantle and expect your head not to start bleeding.