Rewind Posted June 12, 2018 Share Posted June 12, 2018 Thanks Rainlash. Theo cracked me up. Wow, I didn't know you were a one man band. No rush, you put out quality plus you've probably got plenty of other things keeping you busy. Anyway thanks for all your hard work. It's definitely one of my favorites. That sewer level was so fun to figure out. Quote Link to comment Share on other sites More sharing options...
nacho_chicken Posted June 21, 2018 Share Posted June 21, 2018 Wow, this looks very impressive! The fact that you're also making this open-source and the engine available for others to make their fangames with is worthy of commendation. I wish you the best in your efforts. Quote Link to comment Share on other sites More sharing options...
GallantWarrior338 Posted August 25, 2018 Share Posted August 25, 2018 ....Very impressive to say the least. Any idea on when the engine will be released? Quote Link to comment Share on other sites More sharing options...
eclipse Posted August 25, 2018 Share Posted August 25, 2018 It was in the opening post. I'll give this a whirl later. My Python's super-rusty. Quote Link to comment Share on other sites More sharing options...
GallantWarrior338 Posted August 30, 2018 Share Posted August 30, 2018 On 8/25/2018 at 4:33 PM, eclipse said: It was in the opening post. I'll give this a whirl later. My Python's super-rusty. Oof. Many thanks friend. Quote Link to comment Share on other sites More sharing options...
Abundy Posted September 2, 2018 Share Posted September 2, 2018 (edited) Just played this hack the last few days and it was great, I loved the gameplay and even though the story wasn't the main focus it was definitely serviceable and the characters (especially the base conversations) were great as well. I didn't have too much trouble with the basic difficulty until the second to last map where I lost Theo and Joel, who I barely used. I loved the skills and being able to pick between patching up bad stats or boosting good ones (or increasing movement which I did for most of my roster) helped with units getting stat screwed, however I struggled to find a use for some of the units. Theo kinda struggled to keep up in the mid game maps and fell behind the curve as a result, my Eliza got pretty strength screwed, but even if she turned out better I don't see what would have made her worth investing in (almost all of your units have good growth rates and she has very shaky bases). As well as Coyote being a bit on the weaker side. Althea and Drake were definitely my MVPs with honorable mentions to Nia, Kayla and Ophie, Tomes giving slight stat boosts, the AoE tomes and her overall stats just made Althea super valuable in almost every chapter, Drake was the typical solid cavalier/paladin that's always nice to have in FE, most of the other units definitely had their niches(Bows being really long range and accurate made them useful, Dark&Light magic had nice tools, I bet Joel has good potential but my fighters always turn out terribly for some reason, adding some res targetting damage with magic swords made Renae fun to use beyond the usual thief utility etc.). Overall a really solid project, I'm looking forward to anything you come up with in the future. Edited September 2, 2018 by Abundy Quote Link to comment Share on other sites More sharing options...
rainlash Posted September 23, 2018 Author Share Posted September 23, 2018 The Level Editor Update! Version 0.8 of The Lion Throne is out now. The OP has been updated with the download link. Also, you can download it here! Level Editor and Tutorial Yes, it's finally here folks. The fruit of nearly nine months of labor -- my baby, the Level Editor for the Lex Talionis Engine. There is a tutorial which explains how to use the Level Editor here: https://github.com/rainlash/lex-talionis/wiki. You will not need to know how to code AT ALL to use this tutorial, in fact we will never touch the codebase. Just follow the directions and you'll be well on your way in no time. The tutorial should guide you through everything you need to learn to get your first level set-up and running. I welcome questions, so feel free to PM me! Some people have already started using it for their projects -- I know of two projects in the works myself, and with the Level Editor and Tutorial's official release, I hope to hear of more.  Writing and testing the Level Editor and Tutorial took up the bulk of my time these past months, but there have been a few more changes. Custom Combat Animations Critical animations for all default classes now available Regular animations for Sentinel, Halberdier, Skirmisher, Bowsassin and Female Soldier added Two New Difficulties Lunatic Mode: Have you ever wanted to distinguish yourself from among the horde of casuals who dare to consider themselves Fire Emblem players? Have you ever wanted to lose -- a lot? Over and over and over again? Well have I got the mode for you! Lunatic mode (like other Fire Emblem hard modes before it) drastically ups the difficulty. But your own characters bring better stats and new weapons to the fight as well. And trust me, you're going to need it. I only managed to beat it on Lunatic Casual, but I'm sure someone is hardcore enough to try besting Lunatic Classic. Grandmaster Mode: Hate missing? Despise the RNG? Want to truly prove your LTC skills? Welcome to Grandmaster mode, where only the greatest tacticians will triumph. Instead of missing an attack, the attack will instead do damage modified by its hit chance. So a 50% 10 damage attack will always do 5 damage in this mode, instead of flipping a coin for 0 or 10 damage. Have fun taking your strategy to the limit. Minor Changes: Over 100 minor changes to the Lex Talionis Engine, generally to make creating your own custom levels easier. Spoiler Gameplay Balancing Slight nerf to Halberdier promotion gains (Eliza has been buffed slightly to make up for this) Halberdier loses access to Axes General gains access to Axes Chapter 6 has been made slightly easier Sandblast 's number of uses lowered from 10 to 5 End-game adamant weapons have been buffed (-2 weight, +10 accuracy) Casual mode now allows you to make a Battle Save at any time A few caveats before you venture forth: Bugs: As always, I am only one man and cannot find every bug in this behemoth of a codebase (and its only gotten bigger!). So if you encounter a bug, please send me a PM or comment here with the full error message. Also attach your Saves/debug.log.1 if you can, since it has useful information that will help me find the bug and squash it. Saves: Since I made some changes to streamline the level creation process, the format of the save files changed once again. You will not be able to use your old version 0.7 save files in this version.  There's nothing groundbreaking in this update for the base game, so if you're still playing The Lion Throne's Hard mode, just keep going. You can upgrade to this version layer if you want to try out anything new. What's Next? I'm sorry to say, but this is my last content update for The Lion Throne. I've accomplished everything I set out to do with this project. I'll still be around handling any bug fixes, but there will be no more core gameplay updates. But fret not -- I will still be working on improving the Lex Talionis Engine. I hope that you will see another project by me in the future. I've been mulling over something spicy, and I hope to be able to present it to you all when it's ready. Thanks to everyone who played it. I hope you enjoyed playing The Lion Throne as much as I enjoyed making it. And I hope others find the engine useful to them in their own pursuits. Quote Link to comment Share on other sites More sharing options...
LMDHad0uken Posted September 25, 2018 Share Posted September 25, 2018 this occured when trying to look at a new character stats that i added Main Crash 'charmap' codec can't encode character u'\u2019' in position 0: character maps to <undefined> Traceback (most recent call last):  File "main.py", line 117, in <module>  File "main.py", line 45, in main  File "main.py", line 63, in run  File "Code\StateMachine.py", line 191, in update    begin_output = self.state[-1].begin(gameStateObj, metaDataObj)  File "Code\InfoMenu.py", line 33, in begin    self.helpMenu = HelpGraph(self.states[self.currentState], self.unit, metaDataObj, gameStateObj)  File "Code\InfoMenu.py", line 628, in __init__    self.populate_equipment(metaDataObj)  File "Code\InfoMenu.py", line 776, in populate_equipment    self.populate_info_menu_default(metaDataObj)  File "Code\InfoMenu.py", line 888, in populate_info_menu_default    self.help_boxes["Unit Desc"] = Help_Box("Unit Desc", (24, 84 + GC.TILEHEIGHT//2), create_help_box(self.unit.desc))  File "Code\InfoMenu.py", line 937, in create_help_box    description_length = font.size(description)[0]  File "Code\bmpfont.py", line 183, in size    print("%s is not chartable"%(c))  File "encodings\cp437.py", line 12, in encode UnicodeEncodeError: 'charmap' codec can't encode character u'\u2019' in position 0: character maps to <undefined> === === === === === === not sure how to add debug log it wont let me Quote Link to comment Share on other sites More sharing options...
rainlash Posted September 25, 2018 Author Share Posted September 25, 2018 51 minutes ago, FELORDZ said: this occured when trying to look at a new character stats that i added Main Crash 'charmap' codec can't encode character u'\u2019' in position 0: character maps to <undefined> Traceback (most recent call last):  File "main.py", line 117, in <module>  File "main.py", line 45, in main  File "main.py", line 63, in run  File "Code\StateMachine.py", line 191, in update    begin_output = self.state[-1].begin(gameStateObj, metaDataObj)  File "Code\InfoMenu.py", line 33, in begin    self.helpMenu = HelpGraph(self.states[self.currentState], self.unit, metaDataObj, gameStateObj)  File "Code\InfoMenu.py", line 628, in __init__    self.populate_equipment(metaDataObj)  File "Code\InfoMenu.py", line 776, in populate_equipment    self.populate_info_menu_default(metaDataObj)  File "Code\InfoMenu.py", line 888, in populate_info_menu_default    self.help_boxes["Unit Desc"] = Help_Box("Unit Desc", (24, 84 + GC.TILEHEIGHT//2), create_help_box(self.unit.desc))  File "Code\InfoMenu.py", line 937, in create_help_box    description_length = font.size(description)[0]  File "Code\bmpfont.py", line 183, in size    print("%s is not chartable"%(c))  File "encodings\cp437.py", line 12, in encode UnicodeEncodeError: 'charmap' codec can't encode character u'\u2019' in position 0: character maps to <undefined> === === === === === === not sure how to add debug log it wont let me This should be enough to go by anyway. Thanks. So what happened here is you included a UNICODE quotation mark (https://www.fileformat.info/info/unicode/char/2019/index.htm) in the unit description of the character you added. If you go to Sprites/Fonts, you can see where I've defined the Info font (Info.idx). You can only use those regular ASCII characters unless you add your own. Maybe you can try replacing the unicode quotation mark with one from your keyboard -- or leave out the quotation marks altogether. I've never tried using Unicode characters within the engine, so sorry I'm not more help. Quote Link to comment Share on other sites More sharing options...
LMDHad0uken Posted September 25, 2018 Share Posted September 25, 2018 2 hours ago, rainlash said: This should be enough to go by anyway. Thanks. So what happened here is you included a UNICODE quotation mark (https://www.fileformat.info/info/unicode/char/2019/index.htm) in the unit description of the character you added. If you go to Sprites/Fonts, you can see where I've defined the Info font (Info.idx). You can only use those regular ASCII characters unless you add your own. Maybe you can try replacing the unicode quotation mark with one from your keyboard -- or leave out the quotation marks altogether. I've never tried using Unicode characters within the engine, so sorry I'm not more help. That fixed the issue. Thanks! Quote Link to comment Share on other sites More sharing options...
LMDHad0uken Posted October 12, 2018 Share Posted October 12, 2018 Level Editor bug Anyone can walk through the thicket. Is there a way to quick fix the issue?  Quote Link to comment Share on other sites More sharing options...
rainlash Posted October 12, 2018 Author Share Posted October 12, 2018 15 hours ago, FELORDZ said: Anyone can walk through the thicket. Is there a way to quick fix the issue? Oh yeah. In The Lion Throne, unlike normal Fire Emblem GBA, I let anyone walk through the thicket -- it just uses up a lot of their movement points. You can quickly fix that by editing /Data/mcost.txt There should be a row for each terrain type, and a column for each type of unit (Light Foot, Armor, Cavalry, etc.). Just change the numbers in the "Thicket" line to match your tastes. The "-" means that units of that type can't move through that terrain type. Quote Link to comment Share on other sites More sharing options...
Chaz Posted October 12, 2018 Share Posted October 12, 2018 oh wow, A new update and i miss seeing it for a good month. Well then lets try lunatic mode then. Quote Link to comment Share on other sites More sharing options...
Alike Posted October 13, 2018 Share Posted October 13, 2018 Does this work on Android or Chrome OS. I only have a chromebook, and this looks pretty fun. Quote Link to comment Share on other sites More sharing options...
LMDHad0uken Posted October 13, 2018 Share Posted October 13, 2018 (edited) On 10/12/2018 at 10:24 AM, rainlash said: Oh yeah. In The Lion Throne, unlike normal Fire Emblem GBA, I let anyone walk through the thicket -- it just uses up a lot of their movement points. You can quickly fix that by editing /Data/mcost.txt There should be a row for each terrain type, and a column for each type of unit (Light Foot, Armor, Cavalry, etc.). Just change the numbers in the "Thicket" line to match your tastes. The "-" means that units of that type can't move through that terrain type. Awesome thx. Also is there a method in properties to set win condition to defeat all enemies? or how to properly implement this with interact script? another issue i dont know what this error is for starting up the .exe Debug: 1 Version: v0.8.0 libpng warning: iCCP: known incorrect sRGB profile libpng warning: iCCP: known incorrect sRGB profile libpng warning: iCCP: known incorrect sRGB profile Traceback (most recent call last):  File "main.py", line 29, in <module>  File "c:\users\patrick\appdata\local\temp\pip-build-0o75dq\pyinstaller\PyInstaller\loader\pyimod03_importers.py", line 389, in load_module  File "Code\GlobalConstants.py", line 92, in <module>   PRELOADDATA = ET.parse(loc + 'Data/preload_levels.xml')  File "<string>", line 62, in parse  File "<string>", line 38, in parse cElementTree.ParseError: not well-formed (invalid token): line 302, column 16 Failed to execute script main Edited October 14, 2018 by FELORDZ adding info for bug Quote Link to comment Share on other sites More sharing options...
rainlash Posted October 15, 2018 Author Share Posted October 15, 2018 On 10/13/2018 at 10:07 AM, Alike said: Does this work on Android or Chrome OS. I only have a chromebook, and this looks pretty fun. Sorry but it doesn't currently run on either Android or Chrome OS. You can download the executable and run it on Windows, and it also runs on Mac and most Linux distros if you have Python and Pygame as described on the Github page. On 10/13/2018 at 5:30 PM, FELORDZ said: Debug: 1 Version: v0.8.0 libpng warning: iCCP: known incorrect sRGB profile libpng warning: iCCP: known incorrect sRGB profile libpng warning: iCCP: known incorrect sRGB profile Traceback (most recent call last):  File "main.py", line 29, in <module>  File "c:\users\patrick\appdata\local\temp\pip-build-0o75dq\pyinstaller\PyInstaller\loader\pyimod03_importers.py", line 389, in load_module  File "Code\GlobalConstants.py", line 92, in <module>   PRELOADDATA = ET.parse(loc + 'Data/preload_levels.xml')  File "<string>", line 62, in parse  File "<string>", line 38, in parse cElementTree.ParseError: not well-formed (invalid token): line 302, column 16 Failed to execute script main So I can't diagnose the exact problem from what you've given me here. But I can tell you where to look. The likely problem is that you're missing a start or end bracket in your Data/preload_levels.xml file. I would look, as it says, around line 302. But the missing bracket could be anywhere and the error is just being propagated to the end. If you really can't find it, you can send me the text of your preload_level.xml file and I can take a look. Quote Link to comment Share on other sites More sharing options...
LMDHad0uken Posted October 15, 2018 Share Posted October 15, 2018 6 hours ago, rainlash said: Sorry but it doesn't currently run on either Android or Chrome OS. You can download the executable and run it on Windows, and it also runs on Mac and most Linux distros if you have Python and Pygame as described on the Github page. So I can't diagnose the exact problem from what you've given me here. But I can tell you where to look. The likely problem is that you're missing a start or end bracket in your Data/preload_levels.xml file. I would look, as it says, around line 302. But the missing bracket could be anywhere and the error is just being propagated to the end. If you really can't find it, you can send me the text of your preload_level.xml file and I can take a look. Ah I missed closing a bracket. that is always an issue haha thx Also is there a method in properties to set win condition to defeat all enemies? or how to properly implement this with interact script? Quote Link to comment Share on other sites More sharing options...
rainlash Posted October 16, 2018 Author Share Posted October 16, 2018 17 hours ago, FELORDZ said: Also is there a method in properties to set win condition to defeat all enemies? or how to properly implement this with interact script? So there's no method in properties to set win condition, since the text you write in properties is just for show. You need to use event scripting to actually win/lose the game. Setting up a "rout"/"defeat all enemies" win condition is easy enough using the interact script. # Are there any enemies left on the map? if;not any(unit.team == 'enemy' and unit.position for unit in gameStateObj.allunits)   win_game end I've since added a small section on setting up Win Conditions to the Miscellaneous section of the Wiki. Quote Link to comment Share on other sites More sharing options...
Crimson Red Posted October 16, 2018 Share Posted October 16, 2018 This seems really cool, a little disappointed I've only just heard of it, haha. Seems like you did some great work and it's even open-source, I'm kind of impressed lol. I'm curious about your next project, anywhere I can follow you for updates on that when you're ready to reveal it? Quote Link to comment Share on other sites More sharing options...
ardenzio Posted October 21, 2018 Share Posted October 21, 2018 Hi, your game is awesome, every chapter is challenging and very original. I've got some bug.....game stop at level 9 without reason. I send the error log. Please help me i wanna reach the end!!!!!  Main Crash empty range for randrange() (0,0, 0) Traceback (most recent call last):  File "main.py", line 117, in <module>  File "main.py", line 45, in main  File "main.py", line 63, in run  File "Code\StateMachine.py", line 201, in update   update_output = self.state[-1].update(gameStateObj, metaDataObj)  File "Code\StateMachine.py", line 1962, in update   self.message.update(gameStateObj, metaDataObj)  File "Code\Dialogue.py", line 196, in update   self.read_script(gameStateObj, metaDataObj)  File "Code\Dialogue.py", line 134, in read_script   self.parse_line(line, gameStateObj, metaDataObj)  File "Code\Dialogue.py", line 497, in parse_line   self.add_unit(gameStateObj, metaDataObj, which_unit, to_which_position, transition, placement, shuffle=not order, create=level)  File "Code\Dialogue.py", line 1177, in add_unit   unit = SaveLoad.create_unit(new_unitLine, gameStateObj.allunits, gameStateObj.factions, gameStateObj.allreinforcements, metaDataObj, gameStateObj)  File "Code\SaveLoad.py", line 376, in create_unit   gameStateObj.mode, gameStateObj.game_constants, force_fixed=force_fixed)  File "Code\SaveLoad.py", line 465, in get_unit_info   stats, growth_points = auto_level(bases, growths, num_levelups + hidden_levels, class_dict[klass]['max'], mode, force_fixed=force_fixed)  File "Code\SaveLoad.py", line 546, in auto_level   idx = Utility.weighted_choice(growths)  File "Code\Utility.py", line 152, in weighted_choice   rn = random.randint(0, sum(choices) - 1)  File "random.py", line 242, in randint  File "random.py", line 218, in randrange ValueError: empty range for randrange() (0,0, 0) Created save point at last turn change! Select Continue in Main Menu to load!  Quote Link to comment Share on other sites More sharing options...
rainlash Posted October 21, 2018 Author Share Posted October 21, 2018 7 hours ago, ardenzio said: Hi, your game is awesome, every chapter is challenging and very original. I've got some bug.....game stop at level 9 without reason. I send the error log. Please help me i wanna reach the end!!!!!  Main Crash empty range for randrange() (0,0, 0) Traceback (most recent call last):  File "main.py", line 117, in <module>  File "main.py", line 45, in main  File "main.py", line 63, in run  File "Code\StateMachine.py", line 201, in update   update_output = self.state[-1].update(gameStateObj, metaDataObj)  File "Code\StateMachine.py", line 1962, in update   self.message.update(gameStateObj, metaDataObj)  File "Code\Dialogue.py", line 196, in update   self.read_script(gameStateObj, metaDataObj)  File "Code\Dialogue.py", line 134, in read_script   self.parse_line(line, gameStateObj, metaDataObj)  File "Code\Dialogue.py", line 497, in parse_line   self.add_unit(gameStateObj, metaDataObj, which_unit, to_which_position, transition, placement, shuffle=not order, create=level)  File "Code\Dialogue.py", line 1177, in add_unit   unit = SaveLoad.create_unit(new_unitLine, gameStateObj.allunits, gameStateObj.factions, gameStateObj.allreinforcements, metaDataObj, gameStateObj)  File "Code\SaveLoad.py", line 376, in create_unit   gameStateObj.mode, gameStateObj.game_constants, force_fixed=force_fixed)  File "Code\SaveLoad.py", line 465, in get_unit_info   stats, growth_points = auto_level(bases, growths, num_levelups + hidden_levels, class_dict[klass]['max'], mode, force_fixed=force_fixed)  File "Code\SaveLoad.py", line 546, in auto_level   idx = Utility.weighted_choice(growths)  File "Code\Utility.py", line 152, in weighted_choice   rn = random.randint(0, sum(choices) - 1)  File "random.py", line 242, in randint  File "random.py", line 218, in randrange ValueError: empty range for randrange() (0,0, 0) Created save point at last turn change! Select Continue in Main Menu to load!  Hey! I'm glad you like the game! I'm real sorry you got a bug, but thanks for telling me. It is now fixed. You can download The Lion Throne again from the link in the first post on this thread. It will have an updated executable and data files. To use your previous saves, copy and paste your entire old "Saves" folder into the new folder you just downloaded (replacing the mostly empty Saves folder that it comes with). So now you'll have your old Saves folder, but new every other folder and file. Like the error message says, you should now be able to "Select Continue in Main Menu to load!", and you should get past that bug. Please tell me immediately if you still can't go past. You must have gotten real far in Chapter 9's turncount. The bug was kind of hard to find. So, each turn the reinforcement enemies in Chapter 9 get more levels. I didn't have a check on the Hybrid level-up system that stops trying to increase their stats when their stats are maxed. If every one of their stats was maxed, and they still have levels to gain, it would crash. Very esoteric bug.  Quote Link to comment Share on other sites More sharing options...
lefterik52 Posted October 30, 2018 Share Posted October 30, 2018 This is actually really good, keep up the amazing job dude Quote Link to comment Share on other sites More sharing options...
LMDHad0uken Posted November 7, 2018 Share Posted November 7, 2018 Is there a way to make a magic weapon triangle similar to FE10? Like I want to divide Anima magic into its own weapon triangle of Fire, Wind, Thunder but still keep the Anima, Light, Dark triangle. Quote Link to comment Share on other sites More sharing options...
rainlash Posted November 7, 2018 Author Share Posted November 7, 2018 (edited) 15 hours ago, FELORDZ said: Is there a way to make a magic weapon triangle similar to FE10? Like I want to divide Anima magic into its own weapon triangle of Fire, Wind, Thunder but still keep the Anima, Light, Dark triangle. Yes. This is pretty simple actually. You're going to want to reference this tutorial for adding new weapon types: https://github.com/rainlash/lex-talionis/wiki/26.-Adding-New-Weapon-Types And then, you'll want to just modify the values in the Data/weapon_triangle.txt file to something like this (second column is what the weapon is GOOD against, third column is what it's WEAK against): Sword;Axe;Lance; Lance;Sword;Axe; Axe;Lance;Sword; Bow;;; Light;Dark;Fire,Wind,Thunder;M Fire;Light,Wind;Dark,Thunder;M Wind;Light,Thunder;Dark,Fire;M Thunder;Light,Fire;Dark,Wind;M Dark;Fire,Wind,Thunder;Light;M  If you have any problems, feel free to PM me. Edited November 7, 2018 by rainlash Quote Link to comment Share on other sites More sharing options...
LMDHad0uken Posted November 10, 2018 Share Posted November 10, 2018 In the Engine is it possible for a class to have a higher max level cap in the same tier or no? Example SageLv20, BardLv40 as Tier 2 Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.