Jump to content

rainlash

Member
  • Posts

    124
  • Joined

  • Last visited

Everything posted by rainlash

  1. What version of the Engine are you using? There was a bug with the Engine where removing properties from a tile could crash the Engine a while back, and it looks like you have a different version than current -- since your line 839 of Dialogue.py does not look like mine. If your version is not 0.9.3.7, I'd recommend upgrading.
  2. Thanks for the bug report! I've got a new build of the Engine up and running (v0.9.3.7). It fixes this bug you've run into here, and it should also fix your arrow key input bug! Thanks for telling me about the fact that it occurs when you start the turn. That gave me enough info to fix the bug (I think, hopefully!). If you were pressing an arrow key while the turn changed, it was possible that the input would skip and cause this bug. Now it should be fixed. If you've never transferred to a new build of the Engine, it should be really easy. Just download the new Engine build from the same place you downloaded the old one. Then you can take your ENTIRE Saves folder from the old place you had it and move it entirely into the new Engine. Then you can run the new Engine and everything should work. I don't think you'll need to restart the sewer level (Chapter 9).
  3. Tiled. https://www.mapeditor.org/ Make sure they are PNG format, preferably without any transparency. And their length and width must be perfectly divisible by 16 pixels. Yes to the Sacred Stones style. Try this: <status name="Summon"> <id>Summon</id> <image_index>9,0</image_index> <desc>Activated. Summons a dark phantom to aid you.</desc> <components>activated_item,class_skill</components> <activated_item>so_Summon_1</activated_item> <charge_method>MAG</charge_method> <charge_max>60</charge_max> <check_valid_func>bool(self.get_choices(unit, gameStateObj)) and not any(unit.name == 'Phantom' for unit in gameStateObj.allunits if unit.position)</check_valid_func> <get_choices_func>[pos for pos in unit.getAdjacentPositions(gameStateObj) if not gameStateObj.grid_manager.get_unit_node(pos)]</get_choices_func> </status> Notice the changed "check_valid_func" compared to the default summon skill. I just make sure there are no units named "Phantom" on the field before the "check_valid_func" would return True. You could set the "charge_max" to 0 to make it available whenever. I don't think you can summon multiple entities in Engine right now -- and if you could it would be really complicated, probably involving the "call_item_script" component. I can add that to my list of things to make easier though.
  4. I'm sorry that's happening to you. It seems you found at least a jury-rigged solution of your own. I've tried to find the possible cause for this bug, but I've looked through my entire input code and cannot find what could be going wrong... I sped the cursor all the way up and moved around a lot on my own keyboard and nothing like it happened either. But others seem to have this problem too? When you go to the options menu while this is happening (the one with the "Suspend" option), does it skip all the way around the options menu, like from top to bottom, or does it stop on the "Unit" option? This will tell me the type of input error it is. Does minimizing the screen do anything? Does going to a different program (like the internet), and then going back do anything? I know since the errors sort of random this may be a hard question to answer, but is there anything in particular you can remember doing when this happens that could shed some light? Since it doesn't seem to happen all the time, just sometimes?
  5. Not currently possible through a skill/status unfortunately. Well the Engine doesn't. The player chooses the feat on level up. Simply put, if at any time the player is not available to choose what feat should actually be chosen, instead no skill is learned at all. This generally only happens when a unit is loaded into the game at high enough level that they would have gained a feat by level up. Instead they don't gain ANY feat at all. This is why I needed to have Kayla and Coyote have a personal skill -- since they are given to the player at level 8 or above, they would have gotten a feat. Instead, I chose the feat for them and made it their personal skill, since the Engine skips their normal feat at level 8 given by their class.
  6. It's mislabeled in the Data/constants.ini file. Here's the real answer: https://gitlab.com/rainlash/lex-talionis/wikis/8.-Modifying-Game-Constants#constant-descriptions What do you mean by this? I have the feeling the answer is no, but if there's something specific you're looking to do, maybe I can help. Feats are not learned at random. If a player character would level up and gain a feat, they choose from the list of available feats (any status with a "feat" component). If an enemy would level up and gain a feat, instead they just don't gain a feat. I had enemies gain random feats at one time, but it made the levels too variable and just added unnecessary complexity. If you really wanted that feature, it would be trivial to switch it back in the code. You could change line 460 of Data/SaveLoad.py from "if feat:" to "if True:" to have the "Feat" status give out a random feat when the player could not choose. Obviously this would only work with the Git version of the Engine, not the compiled executable version. You can have more than one personal skill, but they cannot be made learnable via level up right now. The syntax in the Data/units.xml is just (skill_id),(skill_id),(skill_id). No level tags are available. That's a good idea though so I'll add that to the ToDo List. The <skills> element in the units.xml ought to work the way you describe, I just hadn't had to use it that way before.
  7. It was at one point. I had a "lightning bolt" spell in one of the earliest builds of the Lion Throne. Actually I just tested it to see if it works and it does! Here's an example (The magnitude of the AOE component doesn't seem to matter): <item name="Lightning"> <id>Lightning_Bolt</id> <spritetype>Anima</spritetype> <spriteid>8</spriteid> <components>spell,uses,aoe,hit,damage,detrimental,ai_speed_up,map_hit_color</components> <weapontype>Anima</weapontype> <uses>5</uses> <RNG>5</RNG> <value>600</value> <desc>Shoots a line of lightning.</desc> <aoe>Line,5</aoe> <damage>11</damage> <hit>85</hit> <LVL>B</LVL> <targets>Tile</targets> <map_hit_color>224,224,-200</map_hit_color> </item> But if you mean the aoe map animation itself... not really. You could use AOE anim just like you would use with "Fireball" spell, but the Engine does not calculate angle to the enemy, so it could not rotate the animated line of attack. Something else to add to the Engine. Yep. It's just a placeholder for now. I'll have to write that one up at some point. I don't mind, but you're asking some tough questions! The status component system is basically the most convoluted and complicated system available to you without coding. So, I don't think it's possible to do what you want to do right now, since unit_tint has no conditional and there's no way to conditionally add a status dependent on a unit's HP. It is a good idea though; you're giving me some good ideas for improvements to the status system (maybe I should add fully "conditional" statuses. Hmmm.).
  8. Thanks for answering this! You are correct. Something in the class_info.xml is screwed up. So the item_mod component is used to modify how items behave, but the hard part here is not the "creating a status that makes my weapons brave", it's the "creating a status that only gives out the first status when facing an enemy with higher speed". Afaik, there's no easy way for you to do this. Here's an example of a simple item mod status to give all your swords "brave". Unfortunately, the only object the item mod conditional knows about is the item itself, not its user or its target. <status name="Swordfaire"> <id>Swordfaire</id> <image_index>5,6</image_index> <desc>While wielding a sword, it gains the brave property.</desc> <components>item_mod,class_skill</components> <item_mod_conditional>item.TYPE == 'Sword'</item_mod_conditional> <item_mod_effect_change>brave;True</item_mod_effect_change> </status> Instead, the closest you'll get is using the "conditional_attackspeed" component. But you won't go twice in a row like you would with a brave weapon. Something like this (I haven't tested whether this works, but hopefully it should): <status name="Underdog"> <id>Underdog</id> <image_index>9,5</image_index> <desc>Grants "brave" attack against enemies with higher speed (so you'll always attack twice against all enemies).</desc> <components>conditional_attackspeed</components> <conditional_attackspeed>100;Utility.lt(self.stats['SPD'], target.stats['SPD'])</conditional_attackspeed> </status> Otherwise, there's really no way to do it. Maybe I can add a "conditional_item_mod" component in the future for these sort of purposes that can know about the user and the target.
  9. All these Python 3 changes are what's getting me. ".values()" used to be subscriptable, but isn't anymore in Python 3... I think I caught all bugs of that type in the most recent push to master, so you can try re pulling. You'll probably find other weird obvious bugs like that also, although I hope you don't.
  10. It takes a little while to upload and show on the dropbox, but it should be up now.
  11. Thanks for the bug report, Ashai! I'm really disappointed in myself for releasing such a buggy version of the Level Editor. I didn't have the time to even put it through the simplest tests and I was just hoping it would work even though I recently made some significant changes. My apologies for wasting your time. It should work now though. At least, I ran through the first 10 chapters of the Gitlab tutorial without any bugs creeping up, so it should definitely get you that far. You can download the updated version at the same place whenever you get the chance. Yes those KeyErrors are normal. I didn't include a Map Sprite for every team for every class in the default package, so it just yells at you that its missing things that may or may not be important. If you add your own class, you can hopefully use those messages to determine if you mess up adding map sprites. The dektop.ini error is simple. There's a file in some of your Data/Animation subdirectories named "desktop.ini" and the Engine doesn't know how to open it. I looked it up -- it seems Windows sometimes just adds it for no reason. The newest version of the Engine now ignores any non "*.txt" or "*.png" files for the animation, but I haven't built that version yet. You're going to kick yourself, but try renaming your Sage script: "Sage-MagicLight-Script.txt". Note the two hyphens.
  12. Thanks for the detailed bug report! If you;d like to just get past chapter 9 there's a really easy fix on your end. The Charge skill is bugged on Dragoons. I don't know what version of the Engine you are using, but in your Data/status.xml, you can replace: <status name="Charge"> <id>Charge</id> <image_index>6,3</image_index> <desc>Adds (distance moved - 2) this turn to damage.</desc> <components>mt,class_skill</components> <mt>max(0, Utility.calculate_distance(self.position, self.previous_position) - 2) if self.position else 0</mt> </status> with <status name="Charge"> <id>Charge</id> <image_index>6,3</image_index> <desc>Adds (distance moved - 2) this turn to damage.</desc> <components>mt,class_skill</components> <mt>0</mt> </status> To fix the issue. In my version of status,xml, it's on line 559 of the Data/status.xml file. Dragoons are already busted anyway, so essentially losing Charge should not make much difference. Sorry about that. Recently updated my Python version from 2 to 3. Forgot to update how the Level Editor interfaces with the Engine. You can redownload the Level Editor and try again -- It should be python 3 compatible now.
  13. There's a new beta version (0.9.3) not officially released but it has changes that should fix these problems. Still not sure exactly what caused the Engine to think there's a controller where there isn't one, but it should be less likely to crash now? Unfortunately, unique weapon animation capability was bugged before version 0.9.3, so you'll need to upgrade if you want to use it. I wrote a quick blurb on how to use it here: https://gitlab.com/rainlash/lex-talionis/wikis/100.-Miscellaneous-Stuff#unique-weapon-animations The only major thing that has changed between the current version and 0.9.3 beta is the status components "passive", "active", and "feat_list" are no longer accepted and have been replaced with these here: https://gitlab.com/rainlash/lex-talionis/wikis/A7.-Advanced-Status-Components. You can look at how I structured my new Data/status.xml file for more examples, or in the Sacred Stones setup found here: https://gitlab.com/rainlash/lex-talionis/wikis/101.-Utilities#sacred-stones-starter-pack It's also likely that saves won't carry over between the current version and this beta. I'll reiterate all this along with actual changelog when the real release comes out, but I wanted to get these fixes in if anyone wanted to use them.
  14. So Avast can make the game hang (like 10 seconds), because every time the game writes save files, Avast spends an inordinate amount of time trying to figure out if the writing the game is doing is evil. But your problem has something to do with using a controller that is not supported. I've only ever tested basic Xbox 360 controllers, so I don't know what other kinds of controllers would even work. Are you using a controller -- or is one plugged in? Because if not then there's a bigger problem.
  15. Battle music fixed in latest master update. Just a small coding error. It will be pushed out with the next build. There's no way to truly remove a constant. In fact, every constant once even referenced exists with a default value of zero. But you can set it to zero with set_game_constant;my_constant;0 Then if you check something like if;gameStateObj.game_constants['my_constant'] it will return false since zero is falsey. if;self.unit.items and self.unit.items[0].heal s;Narrator;He's using a healing item! elif;self.unit.items and self.unit.items[0].status s;Narrator;He's doing some status voodoo. end In the fight_script might work? But it wouldn't be able to tell who's attacking and who's defending. I could add an item component that gives the item a unique battle music when the item is attacking in the next update if you'd find that easier to use. So something like this could be added: <item name="Iron Sword"> <id>Iron Sword</id> <spritetype>Sword</spritetype> <spriteid>0</spriteid> <components>weapon,uses,weight,battle_music</components> <weapontype>Sword</weapontype> <uses>45</uses> <value>10</value> <RNG>1</RNG> <weight>3</weight> <desc></desc> <MT>3</MT> <HIT>90</HIT> <LVL>D</LVL> <battle_music>Iron Sword Theme</battle_music> </item>
  16. There's a new build of the Engine now available in the usual place (v0.9.0.4) It has some small bug fixes and features Can now probably change battle music with "change_music;player_battle;my_battle_music" Unit's ID is used for combat animations instead of displayed name The wiki has been updated with the correct world map commands https://gitlab.com/rainlash/lex-talionis/wikis/23.-World-and-Scenic-Maps Support and Overworld bugs should be fixed The death_quote_info script can now access the unit's killer with self.unit2 from within "if" statements. I still need to add support for {unit2} in regular commands though. Here's a sneak peek of the next big update to the Engine: I'm in the process of cleaning up the spooky advanced sections of the skill system to give user's more customization of skills. There will be no more "active" or "passive" skills that reference sections of the Python code. Instead they've been replaced with more customizable skill components. And as you can see above, I've also added random proc skills, if RNG is what floats your boat.
  17. I think I may have uploaded a newer version of the Engine that doesn't have the support bug, but if not, you'll just have to leave supports on for now. I'll add the other two requests to the ToDoList. They'll be pretty easy to implement. I'll probably have a new build uploaded sometime in a couple of days with these features added in.
  18. Sorry about that. The overworld code is still in a very Alpha state, so it needs to be fixed up. A quick fix on your end is to just don't totally comment out that Data/overworld_data.txt. You can make it look like this and the Engine should run well: # Level ID ; Location Name ; Icon Index ; Position ===Locations # Route connections (between level id's); Route (numpad) ===Routes # Party ID must be integer ; Party name (must be character) ===Parties I'll make a fix to master soon so that if overworld=0 it never tries to load any data about the overworld.
  19. Sorry for the double post, but I'm unable to edit my previous post. One minor correction to the above. The actual way to get boss_crit is "boss_crit=1" not "boss_crit;1". I just had event scripts on my mind, I guess.
  20. Thanks for the bug report. This has been fixed in v0.9.1. Like you say, battle music was added in v0.9.0. You can add it by clicking the Phase Music button on the Properties menu of the Level Editor. It will open up into this menu: If you prefer not to use the Level Editor, you can set it in the overview.txt like so: player_phase_music;Helms Deep enemy_phase_music;In the Midst player_battle_music;Fire Treasure enemy_battle_music;Dragon Boy If you leave Player Battle Music blank, no Battle Music should play. Boss crit kills can be turned on with "boss_crit;1" in the Data/constants.ini file. Just add that line if there is not already a boss_crit line The gameStateObj keeps track of all the units in the game in a list: "gameStateObj.allunits". To check if the number of living enemy units on the level map is greater than 5 in an event script, you could do: if;len([unit for unit in gameStateObj.allunits if unit.team == 'enemy' and unit.position]) > 5 To add it to an objective, try putting this in your Objective Display: display_name;Kill Enemies,{len([u for u in gameStateObj.allunits if u.team == 'enemy' and unit.position])} left. LuckyStart answered this one exactly the way I would do it. This is expected behaviour in the Lex Talionis Engine. You **must** manually close or turn off the house/village/unlockable/searchable event tile in the event script associated with it to prevent it from being used more than once. Otherwise, the event is still there and can still be accessed. You can remove all event tile properties from a tile with the "set_tile_info;{position_of_tile}" command. Look here: https://gitlab.com/rainlash/lex-talionis/wikis/A3.-Event-Commands#map-and-tile-change-commands under Change Event Tiles. There are many examples of this being done in the Lion Throne Data files. Thanks! This is definitely a bug. I changed the Leveling system in 0.9.0, so its expected that corner case bugs like this will pop up. I'll get it fixed for 0.9.1. I'll probably build and release 0.9.1 in a bit, once I finish my final testing. It's all small changes, so there shouldn't be much to update from the user's point of view.
  21. A couple of people have run into bugs using the newest version of the Engine. Specifically if they had a unit defined in the units.xml without any items in their inventory, or if they wanted to use the preloaded_levels.xml to load up their levels for testing. Thanks for all the bug reports! There's a new version 0.9.0.1 of both the Engine and the Level Editor in the usual place that has many of these bugs fixed. Try downloading it if you run into any trouble. I forgot to mention in the last message that there is a new effect in the Data/Effects/Anima/ directory that is used to display the turnwheel's animation ("TurnwheelFlash"). You'll need the effect in order to run the animation. Also, the format of Saves/progress_log.xml has changed with version 0.9.0.1. The old format should work, but you may run into weird issues... As a sidenote, if you run either of the executables from a command prompt, even if the executables crash, their error messages will still be displayed. So I recommend running the executables this way while you are developing.
  22. As prophesied, Version 0.9.0 is out now. The Turnwheel Update So yeah this update took forever. It required a massive overhaul of the Engine. Any possible action the player can take during a turn had to be rewritten to make sure it could be reversed on command. And because of this, I had to do a lot of testing for this update. As I am only one person, and so much of the Engine changed, there are probably still some new and improved bugs lurking about. Please report any that you find so I can fix them. Turnwheel Info In The Lion Throne, I have set it up so that each level completed will grant the player one additional turnwheel use. You can learn how to add the turnwheel to your own game here: https://gitlab.com/rainlash/lex-talionis/wikis/100.-Miscellaneous-Stuff#managing-the-turnwheel Supports The Engine now has support for supports. You can set up your supports to work like the GBA games where supports are gained in combat, or like Path of Radiance, where you choose who to support with whom in base. You can learn how to add supports to your own game here: https://gitlab.com/rainlash/lex-talionis/wikis/27.-Supports Other Lex Talionis engine feature additions: Like usual with big update changes, you will not be able to use old saves with this version of the Engine. Other important notes for those using this Engine: Other bug/minor fixes: Next Update:
  23. It's not possible on the user's end currently to extend the amount of gender variations for combat animations. I figured 5 for each gender would be enough... But if anyone really wants that, I guess it's possible to extend it, although more than 5 variations per gender sounds like a lot, so its not high on my priority list. Now, implementing more map sprite variations per class is something I've put on my to do list. It won't come out with v0.9.0 (since I've officially stopped adding features to that version -- just bug fixing now), but maybe soon after in v0.9.1. It'll probably be set up the same way as the combat animations, with 0-4 replacing male gender ("M"), and 5-9 replacing female gender ("F").
  24. I've fixed this in version 0.9.0 of the engine, which will be released SOON(tm). In the Quality-of-Life update I accidentally goofed up the Xbox controller input handling. Sorry, but the manakete animations are the last animation type that the fe_repo_to_lex converter does not know how to convert. I haven't made head or tail of how the manakete animations are set-up in the GBA games, so converting their animation files is difficult. I never made one. No skirmisher in The Lion Throne has a ranged lance option :) No sorry. As far as I can tell, spell animations are kind of hard-coded in the GBA games. I haven't gotten to work on deciphering them. For my spell animations, I just ripped the frames manually and coded up the scripts myself. I believe that the reason that these classes break when using the converter, is because the spell loop that these animations use (like when the mage's cape flaps in the wind during a spell animation) is hard-coded under a command code. If you replace the command code with the loop command like I have in my Mage and Sage animations, it should work.
  25. No, its not possible to use a particular combat animation when wielding a certain weapon. But I can add it to the todo list for 0.9.0. It'd be really easy to implement. Also not possible to have a finishing blow on a boss automatically become a critical without modifying the code, but it would also be an easy change to the Engine, so I'll add it to the list. Do you know what sound files I don't have for the units' criticals? I know I'm missing the sound files used for the Sacred Stones monsters, but I thought I had all the sounds for FE7. Also, if you know the command code of the sound I'm missing that would be helpful too. Battle music is available in 0.9.0, so not currently available. If you want these new features, I can give you the latest build of 0.9.0, since I know you know your way around the Engine! I'm still bug-testing it, so you may run into issues, but if you're still up for trying it, P.M. me and I'll give you a link to the build.
×
×
  • Create New...