News:

Welcome to the new Sinister Design forums!

Main Menu

Developer's Log

Started by CraigStern, February 11, 2013, 07:19:44 PM

Previous topic - Next topic

CraigStern

Oh, also, forgot to mention: last night, I fixed a couple of issues concerning the unequipping of attack-granting items from player inventory. You'll now lose the associated, granted attacks immediately upon unequip. (I had thought this was already working before, but if it was, I evidently broke it at some point.)

CraigStern

#76
There's been a bit of a change to the way the game handles alternate if statements in dialog scripts. The game now stops performing actions in the branch after successfully executing GoTo, IfGoneGoTo, IfValGoTo, IfValsGoTo, or IfStatGoTo.

What does this mean? Basically, it means that you can chain together a bunch of alternative "if" condition actions, and the game will stop with the first one it finds to be true and execute it. So, for example: let's say that we want to code a situation where the character Herman Bladesmith is given a new sword, but only if he's on the battlefield and only if he has a Strength stat of at least 7. We start by making if statements to cover alternative conditions, then cap it off with a GoTo.

IfGoneGoTo     Herman Bladesmith,2
IfStatGoTo     Herman Bladesmith,Strength,l,7,3
GoTo     4


So if he's not on the battlefield, the conversation will go to branch 2, where we can use EndConvImmediately or else put in some text about how it's a shame he's not there. The game simply won't run the other two actions if it finds that this is the case.

If he is on the battlefield, the game will now check the second if action, IfStatGoTo, to see if he's strong enough. If it finds that his strength is less than 7, we'll go to branch 3, where maybe we'll get some sort of explanation that he's not strong enough; the game won't check any of the actions below IfStatGoTo.

Only if these first two if actions don't get triggered will we reach the last action, GoTo, which is sort of our catch-all. That sends us to branch 4, where Herman gets the new sword.

It's a simple change, really, but it gives us a lot more power to script interesting and varied scenarios. ;)

CraigStern

I have expanded the selection of music available to use in Telepath Tactics.

Please bear in mind that most of these tracks are still in-progress, and that they do not reflect final quality. Also, please bear in mind that Ryan Richko is working on quite a few more tracks for the game--these are just the ones that are currently complete enough to use in their rough form.

Now, with all those disclaimers out of the way, here is the new list of musical tracks available to use in the alpha:

BadOmen -- foreboding music (Ryan Richko)
DeviousSchemes -- dungeon music (Craig Stern)
DeviousSchemes2 -- dungeon music (Craig Stern)
EvilLurks -- sinister music (Ryan Richko)
MythicalCreatures -- mysterious, dramatic music (Ryan Richko)
LizardTribe -- relaxed, tribal music (Ryan Richko)
Onslaught -- battle music (Ryan Richko)
ScionOfEvil -- boss music (Ryan Richko)
TacticiansDuel -- battle music (Craig Stern)
TitleTheme -- Telepath Tactics theme music (Nick Perrin)

CraigStern

I fixed a couple of bugs: one which prevented worn equipment from registering on characters who spawned after turn 0, and a second bug affecting the ability of items to change the value of custom variables.

In addition, I went ahead and added a text pop-up whenever an item does modify a custom variable. (Among other things, this should take care of any confusion about what is happening when a player picks up a sack with money in it.)

The installers have been updated online. Enjoy!

CraigStern

The people cried out for nicer-looking edge tiles, and the gods of Telepath Tactics looked upon them and smiled! Behold: beautiful new Cave tiles, now in progress!

CraigStern

I've begun initial work on what will be the official main campaign.

To help me test out dialog quickly and easily, I've made a few changes to the engine that allow you to load levels without any characters in them. Testing aside, this could be useful for doing establishing shots of locations in-game, or doing scenes where a discussion is overheard from the outside of a building.

CraigStern

Lots of new stuff!

You can now access a character's army number (0 for the player, 1 for the enemy, etc.) by using Army as the Stat parameter in SetStat and IfStatGoTo. Among other things, because this is accessible in SetStat, this means recruiting characters mid-battle is now supported by the engine! (I suggest using SetStat in combination with the OnTalk trigger.)

You can now alter a character's leveling progression mid-game using SetStat as well. There are two aspects to this:


  • You can alter the values of specific stats found within a character's <OnLevelUp> tag by using the normal stat name with "LVL" in front (LVL Max Health, LVL Dodge, LVL Pierce Res., etc.) This affects the likelihood of the character improving that stat on level up.
  • You can add new attacks to be learned on future level-ups by using AttackToLearn as the Stat, the attack's name as the Operator, and the level at which it is to be learned as the Amount.

You can now clear all attacks that a character is set to learn on future level-ups using the new ClearLevelUpAttacks script action. It has only one parameter: character name. Basically, this is for use with character class changes that alter the skills a character is going to learn. (Changing from a Spearman to a Bowman? Better use this to ensure your character doesn't keep learning spear skills on level up!) You'll then want to follow this up by adding new attacks to be learned using the new method in SetStat explained above.

You can now define a character's starting inventory right in CharClasses.xml using the new <StartingInv> tag. This tag uses the exact same format as when you give characters items in individual maps: each item is separated by a forward slash, place -E- next to an item to tell the game that it starts equipped. (This is basically a way to ensure that playable characters start with the right equipment and items in inventory without forcing them to appear on a particular map first.)

CraigStern

Oh, also, I forgot to mention this: I reworked the map editor with two important improvements.


  • The map editor is now a standalone program, not something that runs from within the Data subdirectory of the Telepath Tactics install folder. This will make updating the map editor much easier as I continue to work on it.
  • The map editor now throws up error windows whenever it can't load data it needs; this is going to make debugging a lot easier for me.

Right now, I'm fixing the function that is supposed to label dialog branches with the correct branch numbers when the map editor saves maps to XML files.

CraigStern

I just fixed a bug that was preventing the map editor from loading tiles correctly when loading a map. I've updated the map editor installer online with the fix; download, run and replace to fix your copy. ;)

CraigStern

I've been doing a lot of work testing out the new Cave tiles, and we're making some really good progress; I expect the expanded tileset will be complete within the week.

Oh, also, in case you missed the tweets I sent out this morning: both male and female portraits are done for the Swordsman and Spearman! We're moving on to the Lizardman portraits next. (We're starting with "generic" character class portraits, then doing individualized ones for the campaign afterwards.)

CraigStern

I now have the final set of item graphics from artist Julia Buge! I'll be assigning the graphics to all of the game's items today. :)

Unrelated: I fixed a bug where the game would not always show the correct damage for Feedback or Vengeance before using the attack.

CraigStern

I've now integrated all of the new item graphics into the game!

I also fixed a couple of bugs, including the super-annoying one where "null 0" popped up every time you use an item. The installers have been updated online. ;)

(NOTE: there are a lot of new Cave tiles in this version, but they are not useable just yet; I still have to test them all for any needed revisions, and I need to finish updating the set's TileData. Just FYI!)

CraigStern

Yesterday, I reformatted CharClasses.xml and ObjClasses.xml with a new portrait attribute. (This tells the game what the character's default portrait is, to be used on the character info screen.) I've coded this feature into the character info screen as well: it now loads the correct portrait, scales it and positions it when looking at the detailed info screen for a character.

I've made it so persistent dialog loads before custom dialog in any given battle.

Next, I'd like to add new dialog actions that let you load custom character portraits during conversations. That'll be my next task. ;)

CraigStern

Okay! Displaying character portraits in dialog is now a thing. There are two new dialog script actions that govern this at the moment: AddPortrait and RemovePortrait.


  • AddPortrait -- adds a character portrait to the screen. Takes 3 parameters: Portrait Name (can be literally anything you want, but don't use the same name as another portrait onscreen); Portrait Filename (the name of the image file, minus the .png file extension); and Facing (left or right).

    This will load whatever portrait you specified with the filename, it'll make it face the correct direction and position it on the left or right side of the screen so the facing makes sense. The first parameter, Portrait Name, provides a name that you'll use to reference this portrait from this moment onward for purposes of moving or removing the portrait.
  • RemovePortrait -- removes the named character portrait. It takes just one parameter: Portrait Name (see above).

This system still needs some work--in particular, I want to support custom positioning (e.g. setting x coordinates down to the pixel, or allowing you to layer the portraits as desired if there are more than two people in a conversation) and portrait movement (e.g. having characters smoothly "step forward" or "step back"). I also need to reposition the dialog screen so  portraits can spawn along the bottom edge of the screen, a la Fire Emblem.

Speaking of portraits: here are a couple of new ones from artist David Hammond, the male and female Lissit!

CraigStern

New portrait actions!

ClearPortraits -- clears every portrait on the screen.

PlacePortrait -- places the portrait at a new spot on the screen relative to its current position. This action takes three parameters: Portrait Name, X Pixels and Y Pixels. The Portrait name refers to whatever name you picked for the portrait when you added it; and the latter two tell the game how many pixels to move the portrait. A positive X Pixels will move it to the right; a negative X Pixels will move it to the left. A positive Y Pixels will move it down; a negative Y Pixels will move it up.

New art! We've finished up the lizardman and shadowling animations now, and I think they look really terrific. I've attached a couple of them: the "generic special ability" animation for the lizardman, and the Shadowport animation for the shadowling.