this post was submitted on 30 Jul 2023
13 points (100.0% liked)

Game Development

3470 readers
11 users here now

Welcome to the game development community! This is a place to talk about and post anything related to the field of game development.

Community Wiki

founded 1 year ago
MODERATORS
 

Recently I've been trying to grow my skills by modding an open source game called shattered pixel dungeon and I've run Into a problem I don't quite understand (public int talentPointsAvailable(int tier){ if (lvl < (Talent.tierLevelThresholds[tier] - 1) || (tier == 3 && subClass == HeroSubClass.NONE) || (tier == 4 && armorAbility == null)) { return 0; ) ((https://github.com/00-Evan/shattered-pixel-dungeon/blob/master/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/actors/hero/Hero.java) (line 372)) This right here, especially (public int talentPointsAvailable(int tier)) I don't quite understand It seems Its getting a returned 0 but If you look through the code this isn't exactly defined anywhere doesn't say where the values going or what It's affecting but seems to mysteriously be effecting the amount of talent points (amount of stars I have In img above) when I change the returned value. initially I just wanted to challenge myself by giving myself as many talent points as I could but now I just want to know what's causing that to change the default amount of talent points I have and how you figured It out?

you are viewing a single comment's thread
view the rest of the comments
[–] KoboldCoterie@pawb.social 2 points 1 year ago (3 children)

That method is called in 4 other files. Without going through the game and checking what it's doing, I assume this is the one that's relevant for you:

core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/ui/TalentsPane.java‎ line 204:

int openStars = Dungeon.hero.talentPointsAvailable(tier);

To find this (and other instances), you need to search the entire repo, not just the file, for instances of this method, like so:

(Press Enter to perform the search; the contextual item that appears in the search box as you type will only show the method definition.)

[–] Noneo@lemmy.world 1 points 1 year ago* (last edited 1 year ago) (2 children)

Yea sry I should've clarified there are 4 references but

  1. (Int openStars = Dungeon.hero.talentPointsAvailable(tier)) If you search the repo for (openStars) then you'll find this Is basically an If statement checking whether there should be a star/talentpoint texture on the UI or If there shouldn't so It doesnt exactly effect whether I can upgrade any talents at all which changing the returned value from 0 to something else does do

numbers 2. 3. 4. Are all If statements mostly checking whether (Dungeon.hero.talentPointsAvailable(tier) is greater or less than 0.

Maybe < > this means something different then what I thought? Idk

[–] KoboldCoterie@pawb.social 2 points 1 year ago* (last edited 1 year ago) (1 children)

It looks like this one:

shattered-pixel-dungeon/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/ui /TalentButton.java

is what affects whether you can upgrade your ability or not. The TalentsPane one governs what displays on the panel you pasted the screenshot of, and this one governs what happens when you click the button to upgrade a thing. The onClick method at line 110, In pseudocode:

When you click the upgrade button:

  • If you're in upgrade mode,
  • And the hero exists,
  • And the hero is alive,
  • And you have at least 1 talent point available,
  • And the talent you clicked is not maxed,

Add a point to that talent.

Bolded line being the one that's influenced by the method you're asking about.

[–] Noneo@lemmy.world -1 points 1 year ago

Thank you I looked at that one I guess my brain kept skipping over It cause I dismissed it before I could even get the chance to see what I missed before thanks