Jump to content

The Lion Throne (Fangame and Engine)


rainlash

Recommended Posts

  • Replies 459
  • Created
  • Last Reply

Top Posters In This Topic

1 hour ago, rainlash said:

You're going to kick yourself, but try renaming your Sage script: "Sage-MagicLight-Script.txt".  Note the two hyphens.

...it was so simple.  How did I miss that?  It's working all fine now, so thanks.

Link to comment
Share on other sites

14 minutes ago, Ashai said:

When any unit levels up in the gitlab build, the game will crash and spit this out in the logs

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. 

Edited by rainlash
Link to comment
Share on other sites

  • 1 month later...

Something weird's going on.  I made a new magic sword with a new spell and set it so that it's magic only at range (similar to Ulver's weapon) so that it'll still use the melee sword animation.  It mostly works except for one thing: There's no melee animation and the combat defaults to map animations but only for that sword, regular swords show the melee animation just fine.  I'm not sure what's going on, I'm pretty sure all that I copied from Ulver's weapon are still the exact same.

I haven't updated yet from 0.9.0.4 though, so that might be an issue.  I'm planning to have this magic sword use custom animations anyway whenever the update comes out, so by then this whole thing might be a moot point.

Link to comment
Share on other sites

  • 3 weeks later...

I've been messing around in the level editor for a while, and right after a created my second unit, I tried to run the Lion Throne.exe, and now it won't open. The level editor won't open anymore either. Does anyone know how to fix this? I have no experience with coding, so don't be mean if it's a simple fix.

image.thumb.png.64eb8a869cd246644e9d8b0dabc75ab3.png

 

Link to comment
Share on other sites

21 hours ago, jakc404 said:

Does anyone know how to fix this?

Did you make a new class for your new unit (or otherwise edit the class_info.xml file)? If so, I would double check whatever you wrote in it.

Specifically, check the class' tags. Tags look like, and should be structured, like this: <name_of_tag>appropriate content for tag</name_of_tag>. An example in the class_info.xml would be <short_name>Short Name of Class</short_name>

Mismatched Tag errors can happen when the name in the end tag (the part with the forward slash) doesn't match the one in the start tag. For example, <short_name>Name</shortname> would cause a Mismatched Tag error.

So make sure all the start tags and end tags are the same and aligned correctly. If everything is fine with the tags and the engine still crashes, I'm not sure what the problem is.

Hopefully that was helpful!

Link to comment
Share on other sites

I've been working with this engine and I'm very pleased with what it can do. It's all so very simple once you get the hang of things.

I have a question, though.

Y'see, I've been trying to make a skill that allows a unit to perform a brave attack if its speed is lower than its target's.

I understand you use the item_mod component for this, but, how do you make the comparison between the two Speed Stats?

I've been trying to make it work based on what's written in already existing skills, such as the "Utility.lt(self.stats['stat'], target.stats['stat'])" that can be found in the conditional_(something) tags but I haven't had much luck. Something about the syntax being wrong.

Or is this just not possible?

Edited by Art2193
Link to comment
Share on other sites

On 10/13/2019 at 8:08 PM, LuckyStart said:

Did you make a new class for your new unit (or otherwise edit the class_info.xml file)? If so, I would double check whatever you wrote in it

Thanks for answering this! You are correct. Something in the class_info.xml is screwed up.

19 minutes ago, Art2193 said:

Y'see, I've been trying to make a skill that allows a unit to perform a brave attack if its speed is lower than its target's.

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.

Link to comment
Share on other sites

Interesting. Thanks for your help.

However, I have more questions, if you don't mind helping me out.

 

One would be:

I have a skill that gives its unit Hit+10 and Dmg+3 when below Half HP. 

I would also like to use the unit_tint component in this manner to let the player know the skill is active visually, but I can't figure out how to do it.

My best guess is that I have to do it via the automatic_combat_art component, and then create a status that causes these effects to occur. 

My question would be: How do you make it so the unit_tint component triggers once the unit gets below half HP?

 

Oh, mildly unrelated: the A6. Status Components page in your Wiki is active, but it leads to a blank page.

Edited by Art2193
Grammar mistakes
Link to comment
Share on other sites

2 hours ago, BBHood217 said:

I have a question about map attacks.  Is it possible to make one that goes in a straight line?

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.

1 hour ago, Art2193 said:

Oh, mildly unrelated: the A6. Status Components page in your Wiki is active, but it leads to a blank page.

Yep. It's just a placeholder for now. I'll have to write that one up at some point.

1 hour ago, Art2193 said:

However, I have more questions, if you don't mind helping me out.

 

One would be:

I have a skill that gives its unit Hit+10 and Dmg+3 when below Half HP. 

I would also like to use the unit_tint component in this manner to let the player know the skill is actually visually, but I can't figure out how to do it.

My best guess is that I have to do it via the automatic_combat_art component, and then create a status that causes these effects to occur. 

My question would be how do you make it so the unit_tint component triggers once the unit gets below half HP?

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.). 

Link to comment
Share on other sites

20 hours ago, rainlash said:

You're giving me some good ideas for improvements to the status system (maybe I should add fully "conditional" statuses. Hmmm.). 

Nice!

I have more questions for you, mister Rainlash. But first, a thing I've noticed.

When choosing the 3x Crits, the ones you label as normal, my units do only double damage. (Choosing 2x - 1x, results on my units dealing ludicrous amounts of damage. I had a Myrm that only dealt 1 dmg but after landing a crit, she dealt 10. My educated guess is that this isn't normal)

Regarding that, is there a way through skills/statuses to chance the critical hit multipliers? 

Secondly, how do skills in the units file work? Can one assign more than one personal skill and make them learnable via levelling up from there or is that reserved for the class_info file?

My understanding is that the syntaxis is (level),(skill_id);(level),(skill_id) and so on, but when I try that in the units file, only one skill shows up. If I don't use numbers, all skills show up.

On that note, how do feats work? Are they learned at random?

Link to comment
Share on other sites

On 10/17/2019 at 5:42 PM, Art2193 said:

Secondly, how do skills in the units file work? Can one assign more than one personal skill and make them learnable via levelling up from there or is that reserved for the class_info file?

From my experience, if you want to give a unit more than one personal skill, you'll have to create an entirely new class. You can re-use the anims that you want by copying the appropriate folder and replace all file names in that folder with the name of your new class. Ex: "Archer0-RangedBow-GenericBlue" -> "Bowman0-RangedBow-GenericBlue"

On 10/17/2019 at 5:42 PM, Art2193 said:

On that note, how do feats work? Are they learned at random?

Feats are considered a skill and are applied to a class like any other skill. You're correct about the syntax for skills.

Link to comment
Share on other sites

On 10/18/2019 at 5:53 PM, welshie said:

Feats are considered a skill and are applied to a class like any other skill. 

I got that when I took a look at the code, yes.

What I mean is if they're learned randomly when their level is met 

You know, because classes just list "5,Feat;12,Feat", for example.

Link to comment
Share on other sites

On 10/17/2019 at 4:42 PM, Art2193 said:

When choosing the 3x Crits, the ones you label as normal, my units do only double damage. (Choosing 2x - 1x, results on my units dealing ludicrous amounts of damage. I had a Myrm that only dealt 1 dmg but after landing a crit, she dealt 10. My educated guess is that this isn't normal)

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

On 10/17/2019 at 4:42 PM, Art2193 said:

Regarding that, is there a way through skills/statuses to chance the critical hit multipliers? 

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.

On 10/17/2019 at 4:42 PM, Art2193 said:

On that note, how do feats work? Are they learned at random?

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.

On 10/17/2019 at 4:42 PM, Art2193 said:

Secondly, how do skills in the units file work? Can one assign more than one personal skill and make them learnable via levelling up from there or is that reserved for the class_info file?

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.

Link to comment
Share on other sites

1 hour ago, rainlash said:

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.

Apologies.

I meant "Change". Guess that one escaped my eyes.

What I'd like to do is to change the way critical hits behave through a skill. Such as making critical hits deal 5x damage or only 0.5x damage.

1 hour ago, rainlash said:

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). 

So the engine looks at the Feat pool and then checks if the unit has a Feat, then grants a Feat if the unit doesn't already have it, right?

Link to comment
Share on other sites

On 10/20/2019 at 3:34 PM, Art2193 said:

What I'd like to do is to change the way critical hits behave through a skill. Such as making critical hits deal 5x damage or only 0.5x damage.

Not currently possible through a skill/status unfortunately.

On 10/20/2019 at 3:34 PM, Art2193 said:

So the engine looks at the Feat pool and then checks if the unit has a Feat, then grants a Feat if the unit doesn't already have it, right?

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.

Link to comment
Share on other sites

10 hours ago, rainlash said:

The player chooses the feat on level up. 

Oooooohhh! That's interesting.

10 hours ago, rainlash said:

Not currently possible through a skill/status unfortunately.

Aww, shucks...

 

Say, what program did you use to make your maps? I was using FEMapCreator, but the Level Editor doesn't seem to recognize the pictures I get out of it (via the Snipping Tool in Windows. I even make sure those cuts are pixel perfect)

 

Regarding the summon skill, is it possible to make it so you can only summon once? Like the way it behaves in Sacred Stones. (You Summon once, and then again after your summoned phantom dies)

Or make it work like it does in Gaiden/Echoes? (Summoning multiple entities for a maximum of Eight, for the Other army)

Link to comment
Share on other sites

Am I the only one experiencing a cursor bug? lol in every chapter so far the cursor just bugs out to the top of the screen, as if i had the up button held down. it's really annoying and only goes away when i suspend. Imagine how hard it is to suspend when the cursor wont stop moving up really fast. -_- Is there a fix for this? I feel like it's ruining my experience having to close and reopen the game every 10 mins after fighting with the cursor.

Link to comment
Share on other sites

5 hours ago, Thorgrun said:

Am I the only one experiencing a cursor bug? lol in every chapter so far the cursor just bugs out to the top of the screen, as if i had the up button held down. it's really annoying and only goes away when i suspend. Imagine how hard it is to suspend when the cursor wont stop moving up really fast. -_- Is there a fix for this? I feel like it's ruining my experience having to close and reopen the game every 10 mins after fighting with the cursor.

I have actually experienced this, too. When I was testing a map edit.

It stopped after a while, but I have no clue what a good fix would be.

Link to comment
Share on other sites

7 hours ago, Art2193 said:

I have actually experienced this, too. When I was testing a map edit.

It stopped after a while, but I have no clue what a good fix would be.

Hmm.. After playing around with the cursor speeds and lowering it, it doesn't happen nearly as much, but every once in awhile it still bugs out. Still hoping someone knows something though. I looked through this entire thread hoping for a fix, but oh well. At least my cursor fights are not as frustrating now lol. 

Link to comment
Share on other sites

13 hours ago, Thorgrun said:

Am I the only one experiencing a cursor bug? lol in every chapter so far the cursor just bugs out to the top of the screen, as if i had the up button held down. it's really annoying and only goes away when i suspend. Imagine how hard it is to suspend when the cursor wont stop moving up really fast. -_- Is there a fix for this? I feel like it's ruining my experience having to close and reopen the game every 10 mins after fighting with the cursor.

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?

Link to comment
Share on other sites

On 10/23/2019 at 6:46 AM, Art2193 said:

Say, what program did you use to make your maps? I was using FEMapCreator, but the Level Editor doesn't seem to recognize the pictures I get out of it (via the Snipping Tool in Windows. I even make sure those cuts are pixel perfect)

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.

On 10/23/2019 at 6:46 AM, Art2193 said:

Regarding the summon skill, is it possible to make it so you can only summon once? Like the way it behaves in Sacred Stones. (You Summon once, and then again after your summoned phantom dies)

Or make it work like it does in Gaiden/Echoes? (Summoning multiple entities for a maximum of Eight, for the Other army)

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.

Link to comment
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...