Jump to content
rainlash

The Lion Throne (Fangame and Engine)

Recommended Posts

I think I'm running into the same issue hinka is.

What I did to get this error is as follows:

1. I load the debug level and import a map png.

2. I add a unit to the map.

3. Save, and watch my terminal puke:

Saving D:/FEHacking/lex-talionis/Editor/../Data/LevelDEBUG/MapSprite.png (a 240x160 image)...
libpng error: profile 'sRGB': 2000000h: length does not match profile
Loading D:/FEHacking/lex-talionis/Editor/../Data/LevelDEBUG/MapSprite.png (a 0x0 image)...
Saved LevelDEBUG
QPainter::begin: Paint device returned engine == 0, type: 3
QPainter::end: Painter not active, aborted
QPainter::begin: Paint device returned engine == 0, type: 3
QPainter::end: Painter not active, aborted
QPainter::begin: Paint device returned engine == 0, type: 3
QPainter::end: Painter not active, aborted
QPainter::begin: Paint device returned engine == 0, type: 3
QPainter::end: Painter not active, aborted
QPainter::begin: Paint device returned engine == 0, type: 3
QPainter::end: Painter not active, aborted
QPainter::begin: Paint device returned engine == 0, type: 3
QPainter::end: Painter not active, aborted

For reference that map sprite I'm importing is the same png image that's on the GitLab wiki (fe8map1.png).  It looks like a sRGB error causes the level's MapSprite to get overwritten with a 0x0 png (which explains why QPainter flipped its lid).

Here's my startup:

pygame 1.9.6
Hello from the pygame community. https://www.pygame.org/contribute.html
Debug: 1
ERROR! No words.txt file found in the data directory.
Version: v0.9.3.14
libpng warning: iCCP: known incorrect sRGB profile
libpng warning: sBIT: invalid
Setting Seed 0

A bunch of KeyErrors for other and enemy2 team map animations are printed (no idea if that's expected behavior or not), and after that is this:

Loading ..\Data\LevelDEBUG/MapSprite.png (a 0x0 image)...
Properties
Units
QPainter::begin: Paint device returned engine == 0, type: 3
QPainter::end: Painter not active, aborted

I'm almost positive that sRGB profile error is what's causing this.  I wonder if it's because of a PyQt5 update.  My PyQt5 is Version: 5.14.1, could that cause issues?  Or is it something weirder?

 

Oh yeah and hi I like your engine/fangame.

Share this post


Link to post
Share on other sites
11 hours ago, Sealvester said:

I think I'm running into the same issue hinka is.

Are you running the Level Editor executable or did you just clone the Git Repo?

If you just cloned the Git repo, can you pull down the latest update I made to the Level Editor and do the exact same thing again (using the fe8map1.png file you already have)? If that doesn't work, I also updated the fe8map1.png file from the wiki -- can you try that one?

I do not receive this error on the computer I'm currently working on -- I don't even get the libpng warnings that you get. Which obviously makes testing to try and solve the error very difficult. I have PyQt5 5.13.1 on this machine so I don't know for sure whether it is a PyQt error. But when I get back home to my desktop later today, I should be able to check further. I remember that it does sometimes have those libpng warnings, so I'll test these changes there. 

Other people seem to have this problem too -- I'm trying to solve it from the code side of things so that nobody else runs into this issue, but it seems everyone else just removes the iCCP/sRGB nonsense from their png files...

https://gist.github.com/bluenex/0af2f41fda9954df73a8

https://wiki.archlinux.org/index.php/Libpng_errors

Sorry that I don't have anything more concrete -- Just replying back so you know I am looking into the problem. Your error messages have been a big help.

 

 

Share this post


Link to post
Share on other sites
6 hours ago, rainlash said:

Are you running the Level Editor executable or did you just clone the Git Repo?

If you just cloned the Git repo, can you pull down the latest update I made to the Level Editor and do the exact same thing again (using the fe8map1.png file you already have)? If that doesn't work, I also updated the fe8map1.png file from the wiki -- can you try that one?

I do not receive this error on the computer I'm currently working on -- I don't even get the libpng warnings that you get. Which obviously makes testing to try and solve the error very difficult. I have PyQt5 5.13.1 on this machine so I don't know for sure whether it is a PyQt error. But when I get back home to my desktop later today, I should be able to check further. I remember that it does sometimes have those libpng warnings, so I'll test these changes there. 

Other people seem to have this problem too -- I'm trying to solve it from the code side of things so that nobody else runs into this issue, but it seems everyone else just removes the iCCP/sRGB nonsense from their png files...

https://gist.github.com/bluenex/0af2f41fda9954df73a8

https://wiki.archlinux.org/index.php/Libpng_errors

Sorry that I don't have anything more concrete -- Just replying back so you know I am looking into the problem. Your error messages have been a big help.

 

 

Changing the map PNG to the new one in the wiki fixed the issue for me, and yeah I cloned the Git repo to get the engine.  Thanks for the extra information on this specific issue!

Share this post


Link to post
Share on other sites

Hey there ! I've been using your engine for over a year now and I love it. It's really intuitive and flexible.

  • Promoting an unit while in the base changes the background and music used. The background is the one used for the preparations screen and the music is the first one in the introScript. I didn't notice any messages/errors in the console or debug logs. Here's the video : https://www.youtube.com/watch?v=gxmBXQVNIlA
  • Can you lock a promotion to a specific item/event while keeping the auto promote option (like Ike) ?
  • This one is a bit tricky and completly optionnal. Would it be possible to add the BEXP system from the Tellius games ? There is already a function for giving exp to an unit (used for exp potions) so I wonder what else would be needed. Setting the amount of bexp earned can probably be done with game constants. Again this is more for theorycrafting than anything, I'm just curious. x)

I don't mind looking into the code to do these things as I've already added a bunch of small things (like a paragon skill or leadership stars). I'm far from being knowledgeable about this and especially pygame though.

Share this post


Link to post
Share on other sites

 

On 2/15/2020 at 3:59 PM, Kyogokudo said:

Promoting an unit while in the base changes the background and music used. The background is the one used for the preparations screen and the music is the first one in the introScript. I didn't notice any messages/errors in the console or debug logs. Here's the video : https://www.youtube.com/watch?v=gxmBXQVNIlA

The latest update to the git repo should fix these issues you've experienced -- I think the issue with the promotion music was that your promotion music was the same as the base or non-existent -- that should be fixed. Also, I'll have a new build of the executable with the updates sometime soon.

On 2/15/2020 at 3:59 PM, Kyogokudo said:

Can you lock a promotion to a specific item/event while keeping the auto promote option (like Ike) ?

What do you mean by "Lock a promotion to a specific item/event while keeping the auto promote option"? Do you mean that you want to be able to not allow certain units to auto promote, but by default regular units should be able to auto-promote? If so, I can add a unit or class tag that says "No auto-promote" and have the engine respect that.

On 2/15/2020 at 3:59 PM, Kyogokudo said:

This one is a bit tricky and completly optionnal. Would it be possible to add the BEXP system from the Tellius games ? There is already a function for giving exp to an unit (used for exp potions) so I wonder what else would be needed. Setting the amount of bexp earned can probably be done with game constants. Again this is more for theorycrafting than anything, I'm just curious. x)

It's definitely possible, and not particularly difficult -- just time on my part. I envision it requires adding 2 additional states to the game, and several ancillary functions, game constants, and an event command, which will take some time to code up. I can add it to the to-do list though.

Glad to hear you are enjoying the Engine! If you've managed to add paragon and leadership stars, then you might have enough experience to make the BEXP system yourself... Did you make the leadership stars actually appear on the Info Screen?

Share this post


Link to post
Share on other sites
1 hour ago, rainlash said:

The latest update to the git repo should fix these issues you've experienced -- I think the issue with the promotion music was that your promotion music was the same as the base or non-existent -- that should be fixed. Also, I'll have a new build of the executable with the updates sometime soon.

It works now, thanks ! I never defined the promotion music in the constants so that must be why.

1 hour ago, rainlash said:

What do you mean by "Lock a promotion to a specific item/event while keeping the auto promote option"? Do you mean that you want to be able to not allow certain units to auto promote, but by default regular units should be able to auto-promote? If so, I can add a unit or class tag that says "No auto-promote" and have the engine respect that.

Sorry for the confusion, but yes that's what I was asking for.

1 hour ago, rainlash said:

It's definitely possible, and not particularly difficult -- just time on my part. I envision it requires adding 2 additional states to the game, and several ancillary functions, game constants, and an event command, which will take some time to code up. I can add it to the to-do list though.

Glad to hear you are enjoying the Engine! If you've managed to add paragon and leadership stars, then you might have enough experience to make the BEXP system yourself... Did you make the leadership stars actually appear on the Info Screen?

Yes they do appear on the Info Screen, only as a number though. Still that sounds way too difficult for me, especially dealing with states. x)

Take your time, I'll look into it too.

Share this post


Link to post
Share on other sites

pygame 1.9.6
Hello from the pygame community. https://www.pygame.org/contribute.html
Debug: 1
ERROR! No words.txt file found in the data directory.
Version: v0.9.3.12
libpng warning: iCCP: known incorrect sRGB profile
libpng warning: sBIT: invalid
Setting Seed 0
DLL load failed while importing manhattan_sphere: The parameter is incorrect.
Fast manhattan sphere generation not available. Falling back on default Python implementation.
DLL load failed while importing LOS: The parameter is incorrect.
Fast line of sight calculation not available. Falling back on default Python implementation.
DLL load failed while importing fast_pathfinding: The parameter is incorrect.
Fast pathfinding not available. Falling back on default Python implementation.

This is what I get when I open the program and the MapSprite.png is changed to empty.

 

I then get all the map animations missing and then

Properties
Units
QPainter::begin: Paint device returned engine == 0, type: 3
QPainter::end: Painter not active, aborted
QPainter::begin: Paint device returned engine == 0, type: 3
QPainter::end: Painter not active, aborted... (Infinite until map import)

 

I also get this when I import and save:

libpng error: profile 'GIMP built-in sRGB': B0AD3675h: length does not match profile
Saved LevelDEBUG

 

Sorry for taking so long, I had a lot of school work.

Share this post


Link to post
Share on other sites

Here is something new that happened after I pulled the recent version. Everything from the folder, including the files you had in there, were cleared when I tried to save before importing. 

Share this post


Link to post
Share on other sites
51 minutes ago, Itshinka said:

Here is something new that happened after I pulled the recent version. Everything from the folder, including the files you had in there, were cleared when I tried to save before importing. 

What do you mean by this? I'm not sure I understand.

But just to check, you are still getting the empty MapSprite.png error with the latest version of the Level Editor? It should say v0.9.3.14b at the top. What image length and width does it output to the console when it loads and saves the MapSprite?

I was hoping the latest Level Editor update, because it loads the image on import and then saves over it with a new format, would remove the issue you are having. For instance, when you import a new image to use as the Map Sprite, that image should be overwritten immediately. You can tell this because the filesize should change. I was hoping this new image would not have the sRGB length bug that you and Sealvester ran into. 

Share this post


Link to post
Share on other sites

When I pulled from the git, LevelDEBUG had a bunch of other files in it as well, which I assume were your things. They were all deleted. Yes, that is the correct version. However, I noticed something new after updating. If I save before importing, I can see the map go away. The editor’s map changes to white if you save before importing.

Share this post


Link to post
Share on other sites

Opening the minimap in a map with snags in it crashes the game with this error:

Error! Unrecognized Minimap Key Snag
=== === === === === ===
Damn. Another bug :(
Quick! Copy this error log and send it to rainlash!
Or send the file "Saves/debug.log.1" to rainlash!
Thank you!
=== === === === === ===

*** Lex Talionis Engine Version 0.9.3.16 ***
Main Crash argument 1 must be pygame.Surface, not None

Created save point at last turn change! Select Continue in Main Menu to load!

=== === === === === ===

Quickly looked at Minimap.py, snags aren't handled in the handle_key function. I have no idea how all of this works though so I can't fix it at the moment.

Share this post


Link to post
Share on other sites
20 minutes ago, Kyogokudo said:

Quickly looked at Minimap.py, snags aren't handled in the handle_key function. I have no idea how all of this works though so I can't fix it at the moment.

Thanks for the bug report! Here's an easy fix:

Go to your Data/terrain.xml. Navigate to the Snag terrain and change its minimap key from <minimap>Snag</minimap> to something else that is a valid key, maybe like <minimap>Thicket</minimap>.

I never used the Snag terrain in the Lion Throne and must never have caught that I put an incorrect minimap key for that terrain. I've updated the git repo terrain.xml to fix this bug also.

Share this post


Link to post
Share on other sites

Hey, I'm kinda new to this whole fan gaming scene so sorry if my question was already answered somewhere but I'm really enjoying using the engine so far and facing a particular problem:

I want to have a win condition, where the boss needs to be fought with a specific weapon to get the "good" ending to the chapter.
So I would need to have an If condition in the interactScript that checks if one of the units is the enemy boss (In this case his name would be "Hilaru") and he is fought (Doesn't matter if he dies) with a specific weapon (In this case a spell called "Cleanse").
Additionally I also would like the character that is casting the spell to also be specified, but it's not a priority, just used for some flavor text.

Thanks in advance ^^

Share this post


Link to post
Share on other sites
On 3/1/2020 at 3:55 AM, Bastionb56 said:

I want to have a win condition, where the boss needs to be fought with a specific weapon to get the "good" ending to the chapter.
So I would need to have an If condition in the interactScript that checks if one of the units is the enemy boss (In this case his name would be "Hilaru") and he is fought (Doesn't matter if he dies) with a specific weapon (In this case a spell called "Cleanse").
Additionally I also would like the character that is casting the spell to also be specified, but it's not a priority, just used for some flavor text.

Since you specified that "Cleanse" is a spell, we don't have to worry about counterattacks, which makes writing the if condition in the interactScript simpler.

First, we check that the defending unit (self.unit2) is named "Hilaru". Then we check that the attacking unit's (self.unit) first item (which would be the item they're using if they're using a weapon or spell) is named "Cleanse". If so, set that we have unlocked the good ending for this level.

if;self.unit2 and self.unit2.name == 'Hilaru'
    if;self.unit.items and self.unit.items[0].name == 'Cleanse'
        set_level_constant;good_ending
    end
end

Later, in the outro_script, you can check to see if "good_ending" is set in the level constants: if;"good_ending" in gameStateObj.level_constants and change the ending if so.

The unit that attacked with the spell is referred to as self.unit in if statements. If you want that unit to speak, you can use {unit} in dialogue commands. Although, the interactScript is called after combat, so you'll need to use the fightScript if you want it to happen before combat. This if statement should work there too.

Like so:
 

if;self.unit2 and self.unit2.name == 'Hilaru'
    if;self.unit.items and self.unit.items[0].name == 'Cleanse'
        set_level_constant;good_ending
        u;{unit};Left
        s;{unit};Take that, Hilaru!
        r;{unit}
    end
end

 

If you wanted something more complicated, I would recommend foregoing using the interactScript and rather have the spell apply a specific status on hit that lasts forever. Then you can at the end of the level, just check to see if Hilaru has that status. if;any(unit.name == 'Hilaru' and 'Cleanse_Status' in [s.id for s in unit.status_effects] for unit in gameStateObj.allunits). But this should suit your needs for now.

Edited by rainlash
need to specify that Cleanse_Status checks against status ids

Share this post


Link to post
Share on other sites

Thank you so much for responding so quickly, yes this is absolutely what I needed.

I can’t believe I didn’t find this out on my own, it’s so easy after all! Maybe I'll use the status method for a later chapter again (Seeing as it allows for a lot more cool things like "Cleanse all enemies in 12 turns" or something) So thank you very much ^^

Update: Just tested it out, works like a charm!
I also adjusted the fightScript.txt so that each mage that can use the spell (in this case only two) has a unique quote when using it!
 

if;self.unit2 and self.unit2.name == 'Hilaru'
    if;self.unit.items and self.unit.items[0].name == 'Cleanse'
        set_level_constant;good_ending
        if;self.unit and self.unit.name == 'Nina'
            u;Nina;Left
            s;Nina;This is what you made this spell for father... I will make you proud!
            r;Nina
        elif;self.unit and self.unit.name == 'Alice'
            u;Alice;Left
            s;Alice;Sigh... If this "Cleanse" spell works then... I'm gonna have some questions for that kid.
            r;Alice
            #Make Alice talk to Nina in the outro
            set_level_constant;alice_cleanse
        end
    end
end

Very happy with the results, so thank you very much! ^^

Edited by Bastionb56

Share this post


Link to post
Share on other sites

Right from the Level Editor. Lastest version:
Captura.thumb.PNG.d3b127377ba4e13b3db8a0d6141517a1.PNGCaptura1.thumb.PNG.0be627ab3bba89b39ef8d8ad37066622.PNG

And there it open the editor as if there were no more problems (haven't tried to go further though)

Share this post


Link to post
Share on other sites
3 hours ago, axelloid said:

Right from the Level Editor. Lastest version:

That's not a problem -- the Engine is just informing you of missing map sprites. For instance, there is no "other" team (green) Myrmidon class map sprite, so it yells at you. You can safely ignore it if you don't care because you don't plan on using an "other" team Myrmidon in your game. However, if you do plan on using an "other" team Myrmidon, then you best pay attention because when you boot up that level in Engine, it'll display the unit as a Citizen.

Share this post


Link to post
Share on other sites
24 minutes ago, rainlash said:

That's not a problem -- the Engine is just informing you of missing map sprites. For instance, there is no "other" team (green) Myrmidon class map sprite, so it yells at you. You can safely ignore it if you don't care because you don't plan on using an "other" team Myrmidon in your game. However, if you do plan on using an "other" team Myrmidon, then you best pay attention because when you boot up that level in Engine, it'll display the unit as a Citizen.

Ok, I'll pay attention on which units I do need for them no to be shown as Citizens xD

Share this post


Link to post
Share on other sites

Hey there ! Got a couple more issues/questions, I hope you don't mind.

  • The victory screen displays odd results when the map objective isn't either kill boss or rout. I've had it displaying 20 turns for a survive 14 turns map (I call the win_game and victory screen methods in turnChangeScript) and for escape objectives it just defaults to no MVP and 0 turns.
  • Looking at older posts, you said adding a screenshot feature was easy and that you only needed to map it to a key. Could you add it ?
  • The loot village AI acts weirdly when there's destructible tiles other than villages (such as snags). I guess that the IA is coded to go for anything that is destructible but it somehow just stands near a snag and doesn't even destroy it. Is there any way I could change it so it would only go for destructible villages ?

Share this post


Link to post
Share on other sites

Healing in Absolution doesn't seem to get tracked by the records, the two healers are constantly at the very bottom of the MVP rankings.  I wonder if it has something to do with the fact that heals there are staffs instead of light magic like in the Lion Throne.

Share this post


Link to post
Share on other sites
On 3/7/2020 at 3:52 PM, Kyogokudo said:

The victory screen displays odd results when the map objective isn't either kill boss or rout. I've had it displaying 20 turns for a survive 14 turns map (I call the win_game and victory screen methods in turnChangeScript) and for escape objectives it just defaults to no MVP and 0 turns.

Unfortunately, you can't call both `win_game` and `victory_screen` in the same script. `win_game` doesn't have any effect until the event script completes. Once the script completes, then the Engine then checks to see if `win_game` was called and does a lot of cleaning up and changing of state. So if you call `victory_screen`, `victory_screen` will look at the results from your last win -- which, in your case, is going to be the results from the last level.

Basically, call `victory_screen` in the outroScript unless you have a good reason not to, since the outroScript is guaranteed to occur after `win_game` is called. I've updated the wiki to make this more clear.

On 3/7/2020 at 3:52 PM, Kyogokudo said:

Looking at older posts, you said adding a screenshot feature was easy and that you only needed to map it to a key. Could you add it ?

Yes. In the newest version of the Engine, v0.9.3.18, there is now a dedicated, unchangeable screenshot key. Since there doesn't seem to be any standard, except Window's "Alt + PrtScn" / "Win + Alt + PrtScn", I chose the grave/backquote key (`). You can find it generally at the top left of the keyboard -- the symbol under the ~ symbol. You don't need to press shift. Pressing this key will output a screenshot called "Lex_Talionis_{current_datetime}.png" to the current directory. Hopefully, you find this useful.

On 3/7/2020 at 3:52 PM, Kyogokudo said:

The loot village AI acts weirdly when there's destructible tiles other than villages (such as snags). I guess that the IA is coded to go for anything that is destructible but it somehow just stands near a snag and doesn't even destroy it. Is there any way I could change it so it would only go for destructible villages ?

The newest version of the Engine now has support for two additional secondary AIs. AI #10 will approach any destructible tile that does not also have HP (so something like a destroy-able village). AI #11 will approach any tile with HP. I also changed a couple of the AI presets in the ai_presets.txt file to better reflect these changes.

The AI you were probably using had a secondary AI that approached both destructible and HP tiles, but could not interact with HP tiles. The "PursueVillage" preset AI now only pursues non-HP destructible tiles, like its name suggests. The "PursueTile" AI pursues HP tiles, and the new "PursueVillageTile" AI pursues both.

On 3/7/2020 at 9:36 PM, BBHood217 said:

Healing in Absolution doesn't seem to get tracked by the records, the two healers are constantly at the very bottom of the MVP rankings.  I wonder if it has something to do with the fact that heals there are staffs instead of light magic like in the Lion Throne.

I've also fixed this in the latest version of the Engine. The difference was actually that Absolution had set experience for staffs, which meant the game never needed to calculate the amount of healing done.

 

All of these changes above are in the latest version of the engine, v0.9.3.18, which is currently available on the git repo. I'll build it and post it to the usual place sometime later today.

Share this post


Link to post
Share on other sites

Thanks !

On 3/9/2020 at 10:26 PM, rainlash said:

Unfortunately, you can't call both `win_game` and `victory_screen` in the same script. `win_game` doesn't have any effect until the event script completes. Once the script completes, then the Engine then checks to see if `win_game` was called and does a lot of cleaning up and changing of state. So if you call `victory_screen`, `victory_screen` will look at the results from your last win -- which, in your case, is going to be the results from the last level.

Basically, call `victory_screen` in the outroScript unless you have a good reason not to, since the outroScript is guaranteed to occur after `win_game` is called. I've updated the wiki to make this more clear.

Oh I understand now. Thing is, I do have a reason to call victory_screen outside the outroScript. For the chapters I mentionned there are interactions between units, but calling interact_unit just ends the outroScript so I have to call it in turnChange or escape. Guess I'll do without the victory screen for now.

Share this post


Link to post
Share on other sites

How complete is the overworld feature? I'm looking to include it in my project but there's no documentation available on it. The update txt file mentions that it's incomplete but a quick peek at the code shows that there's currently a lot available.

I wouldn't even mind writing some code for that (I've already done some slight modifications already on my own) but I have no idea where to look lol.

All I want is to be able to move the party between chapters with the option for side chapters. Is that too out of reach at the moment?

Edited by TheeBill

Share this post


Link to post
Share on other sites
3 hours ago, TheeBill said:

How complete is the overworld feature?

I honestly haven't taken a look at it in a while. It's on my todo list, but very far down.

I do know that the last time I looked at it, you could place a party on the overworld and move them between chapters, but I think the integration with event scripts was still buggy. If you want to try it out, just set overworld=1 in constants.ini and fill out the Data/overworld_data.txt file. My DataSacredStones/ folder in the git repo has an example that I was using. The Data/overworld_script.txt file controls what happens in the overworld (although this may be buggy). It looks for "ow_trigger" calls from other scripts and then does them in order when the overworld is first displayed after every chapter. You can find all the overworld event commands in Dialogue.py (line 367+). There's no documentation on what the commands do anywhere.

If you do manage to get something working on your end, let me know, because that would be pretty awesome!

Share this post


Link to post
Share on other sites
1 hour ago, rainlash said:

If you do manage to get something working on your end, let me know, because that would be pretty awesome!

I got something a few hours after posting the original message. But I've since hit a wall.

image.png.d88b8df744254e1df1ee35eaa2f7e684.png

Here's a gif link to what it looks like so far:

https://gyazo.com/f990061e40fb50317416320d98c576ca

I can only pretty much display the character and the map. Movement works somewhat. For some reason pressing up once makes me do a weird up and down motion. It's only the second press and after that takes me to the location properly. The locations are also in reverse order for some reason (Randall starts on location 1 instead of 0). Aside from that movement seems fine.

That's pretty much where everything breaks down though lol. I'll write up the issues I ran into:

  • If I happen to click literally anywhere on the map except Randall, the game crashes.
  • Sometimes, Randall becomes unresponsive if I release and re-activate control of him a few times. Doing anything except moving the cursor crashes the game I think (i.e pressing x).
  • I can't seem to get triggers working at all. It crashes the game before the map even shows up.

Fortunately (maybe?), all crash logs I've encountered so far seem to go back to the same thing with a map attribute being type None:

Spoiler

*** Lex Talionis Engine Version 0.9.3.16 ***
Main Crash 'NoneType' object has no attribute 'width'
Traceback (most recent call last):
  File "main.py", line 115, in <module>
    main()
  File "main.py", line 42, in main
    run(gameStateObj, metaDataObj)
  File "main.py", line 60, in run
    mapSurf, repeat = gameStateObj.stateMachine.update(eventList, gameStateObj, metaDataObj)
  File "C:\Users\anon\Github\lex-talionis\Code\StateMachine.py", line 198, in update
    update_output = self.state[-1].update(gameStateObj, metaDataObj)
  File "C:\Users\anon\Github\lex-talionis\Code\StateMachine.py", line 260, in update
    gameStateObj.cameraOffset.update(gameStateObj)
  File "C:\Users\anon\Github\lex-talionis\Code\CustomObjects.py", line 488, in update
    gameStateObj.set_camera_limits()
  File "C:\Users\anon\Github\lex-talionis\Code\GameStateObj.py", line 455, in set_camera_limits
    if self.cameraOffset.x > (self.map.width - GC.TILEX): # Need this minus to account for size of screen
AttributeError: 'NoneType' object has no attribute 'width'

So I'm hoping it's a quick fix that maybe I could even do as I look at it more.

I think that the non-crash movement issues are probably on me though because I'm still just barely understanding how the routes work.

Here's my overworld_data.txt if you're curious.

Spoiler

# Level ID ; Location Name ; Icon Index ; Position
# The positions are multiplied by 8 for some reason.
===Locations
# 503, 326
0;Milthon Grove;0;63,40
# 529, 312
1;Redrun Village;1;66,39
# Route connections (between level id's); Route (numpad)
===Routes
0,1;8,2
1,0;2,8
# Party ID must be integer ; Party name (must be character)
===Parties
0;Randall

 

 

 

 

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...