The Sinister Design Forums

Please login or register.

Login with username, password and session length
Advanced search  


Welcome to the new Sinister Design forums!

Show Posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.

Messages - CraigStern

Pages: 1 ... 3 4 [5] 6 7 ... 252
??? / Re: A new engine!
« on: February 05, 2019, 02:09:41 PM »
-- the AI now accounts for the fact that backstabbed targets can't counterattack.

-- made a version of the the terrain inspector for battle; it drops the coordinate display in favor of displaying any damage from the space, the element of the damage, and any stat bonuses or penalties the space provides.

-- created a Drowning element symbol for purposes of correctly displaying drowning damage from water tiles.

-- added a button to toggle the terrain inspector on and off during battle to the Action bar.

-- added the 'G' hotkey as a shortcut to the Grab button, and the 'T' hotkey as a shortcut to the Talk button in battle.

-- added the shortcuts to the tooltips for all the major Action Bar buttons in battle.

-- added a tutorial bit about regaining energy in battle to Battle at the Oasis.

-- increased the Energy cost for Pinning Shot from 2 to 4 to make it less overpowered as a tool in smaller battles.

-- fixed: the terrain inspector would remain visible onscreen during dialogue, combat exchanges, and enemy turns.

-- fixed: if you were on the "Sell" page of the shop and you moved items around between units and the reserve supplies, the shop would not auto-update the listed items you could sell unless you clicked on the "Sell" category again.

-- fixed: the game would sometimes freeze in combat due to inappropriately paused pop-up text that it would then wait to complete animating before proceeding (which the pop-up text would never do, of course, because it was paused).

-- fixed: returning to the title screen and triggering a sound effect would produce an error as the game attempted to refer to the old audio source.

-- fixed: script actions, items, and equipment that boost character Speed were not boosting the character's maximum steps along with it.

??? / Re: A new engine!
« on: February 04, 2019, 04:20:38 PM »
-- clicking on a unit's row in the army overview interface now opens up their character screen for a more thorough inspection.

-- the AI now grays out units once it's done with them, making computer turns much easier to follow.

-- implemented a 2-second delay in the AI system between an AI character getting killed/Stunned/Frozen/Enthralled during its turn, and the AI going off to the races with new moves. (This makes it much easier to follow what's going on in these situations.)

-- the level-up screen got a bit of visual polish; it now fades out instead of just insta-vanishing when dismissed, and uses bolded arrow symbols instead of > symbols to denote stat changes.

-- fixed: clicking (or hitting escape) on the level-up screen when there was a message there showing new skills and/or proficiencies would close the whole screen instead of closing the message.

-- fixed: the descriptions in the resistance stat mouseover tooltips in the level-up screen could sometimes get cut off.

-- fixed: the name and class/level/experience lines on unit mouseover tooltips could sometimes get cut off.

-- fixed: the status effect icon would not go away on the same turn a status effect wore off.

-- fixed: mousing over units while moving would cause their health bar to display in the wrong spot.

-- fixed: the AI would wig out whenever one of its units acquired Stunned or Frozen status mid-AI-turn, as it would attempt to continue executing the old list of moves even as it recalculated its moves. (This one took a stupidly long time to fix due to the difficulty of tracking down and killing the offending coroutines at the right place in the code.)

??? / Re: A new engine!
« on: February 03, 2019, 09:34:52 PM »
-- the game now animates the energy bar refilling when characters regain energy at the start of a turn.

-- added a "level up" sound effect to the game accompanying the appearance of the level up screen.

-- added deployment music to the game.

-- added placeholder title screen music to the game.

-- fixed: it was possible to "skip" cut scene menus using the escape key.

??? / Re: A new engine!
« on: February 01, 2019, 03:28:50 PM »
-- for all combat barks except for deployment barks and defeat barks, the dialogue window now now auto-closes a couple of seconds after it finishes typing out the dialogue so as to render barks less obtrusive to the flow of battle.

-- created a little inspector window in both battle and in the map editor that tells you the coordinates, terrain type, and elevation of every tile as you mouse over it. (In battle, it's turned off by default, but can be toggled on with Shift + T.)

??? / Re: A new engine!
« on: January 31, 2019, 08:15:40 PM »
-- music can now play continuously between scenes rather than automatically cutting out at every scene change! When changing from one scene to a second scene that uses the same background track (or has a blank musictrack attribute), the game continues playing the existing music from the initial scene.

??? / Re: A new engine!
« on: January 30, 2019, 01:04:30 PM »
-- created a new Army Overview interface that lays out all the units in a given roster in table format, displaying their name, species, class, level, experience, morale, current/max health, current/max energy, daily food consumption, and monthly salary. Mousing over a unit's row in the table highlights it; units that have 0 health remaining have their rows redded-out. Mousing over the icons at the top of the table offers an explanation of what the numbers mean.

-- new script action: ShowArmyOverview. Cut scene only; it displays the army overview interface for a given roster of units. One parameter, optional: roster number. (If not used, the game displays the current roster by default--which, at the moment, is always 0.)

-- implemented two new special characters offering support for and ♥ in text. These, are, respectively:
Code: [Select]
Code: [Select]

General Discussion / Re: Ask the developer a question!
« on: January 30, 2019, 08:07:36 AM »
Oooh, this is a complex question to answer! Text processing for most* special characters happens long after the XML parsing process is through; it happens right before the text is displayed or used, so that script actions in the same scene, conversation, or even the same dialogue branch can alter the values that certain special characters stand in for.

The order of special character swapping, as it now stands, is basically: (1) -NL-, (2) values reflecting the general game state that cannot affect, but which can be used to set or check custom variables (-SCENE-, -DAYSPASSED-, -AURA-, etc.), (3) number-getters (LASTINLIST[] and RANGE[]), (4) ID[], (5) custom variables (-VAL:-, then -STR:-, then LIST{}), (6) PICK{}, (7) BRANCH[], (8) all the triggering unit properties (-ARMY-, -Y-, -X-, -NAME-, -CLASS-, heshe/himer/hiser, etc.), (9) all the "CHAR2" secondary unit properties (for dialogue that triggers relative to a second character), and finally (10) basic character substitutions (**, --, and ;;).

Based on my testing, that order tends to work quite well. (Having the double-hyphen last is particularly important in order to avoid problems processing multiple special characters in a row, like -NL--NL-.) There's no cycling at the moment; it just does a single pass-through. I have yet to encounter a situation that requires more than one pass-through to work, though I'm sure one must exist. I'll make the necessary changes if I ever run into it.

...oh, and about Unicode: getting Unicode characters to work in Unity at all is kind of a process, unfortunately, so probably not. However, your question has inspired me to add support for a couple more ASCII characters I can foresee people wanting to use, so hopefully that'll do. :)

* procedurally generated dialogue in the engine has its own, largely distinct set of special characters, swapped at the time the dialogue is generated. This occurs much earlier on than swapping for special characters elsewhere in the engine, as proc gen special characters refer to values internal to the character being generated rather than current game state or custom variable values. I mostly haven't discussed proc gen special characters, so if you see me talking about special characters, 99% chance is that it's the normal kind.

??? / Re: A new engine!
« on: January 29, 2019, 01:17:49 PM »
-- the presence of an item sack on a space now impacts the AI's decision whether to move there (proportionately to how full of items the sack is).

-- ditched the morale report screen (and the ShowMoraleReport action) in favor of a generalized report screen that can be summoned via the new, more flexible ShowReport action. The new action takes two parameters: (1) report title and (2) report text. (You can break the report text into different pages using the verticle bar character as a delimiter.) ShowReport can summon a report screen in both cut scenes and battle.

-- implemented the objectives window in battle via the report screen. The objectives window can now be called up in battle via the Settings menu.

-- new special character, the double-semicolon (;;)! When this character is detected in text, the game swaps in a comma. This allows you to use commas in your script action parameters without totally screwing things up! (The game uses actual commas to delimit script action parameters--using the double-semicolon in script action parameters allows you to sidestep this effect.)

So, for instance, you can create an objective containing a comma using AddObjective in this fashion. This...

Code: [Select]
AddObjective/Experiment with the Undo button;; then end the turn.
...becomes what you see in the screenshot below.

-- new script action: ListToString. This joins together all the entries of a List, in order, to create a single custom string value. Three parameters: (1) list name, (2) connector, and (3) custom string name.

Suppose you had a list named Letters with three entries (A, B, and C)--if you did this...

Code: [Select]
ListToString/Letters,-,LtrString would create a custom string LtrString with the value A-B-C. Or, if you used the new ;; special character...

Code: [Select]
ListToString/Letters,;; ,LtrString would create a custom string LtrString which displays as A, B, C.

-- the RemoveObjective action no longer requires an exact match with the parameter--instead, it will check to see if the objective contains the parameter string as a substring. (For instance, to remove the objective "Find Nathalie," you can call RemoveObjective/Find or RemoveObjective/Nathalie.)

-- battle objectives now support special characters and custom variables; these are processed appropriately when displaying the Objectives Screen.

-- fixed: the game wasn't supplying a second character for purposes of processing special characters in Attacking and Healing combat barks.

??? / Re: A new engine!
« on: January 28, 2019, 03:42:30 PM »
-- when mousing over unit portraits in the deployment screen, the game now shows tooltips with more detailed unit information (such as current experience, health, and energy) of the sort shown when mousing over a unit during the battle.

-- you can now right-click each unit portrait in the deployment screen to open up the unit's character screen for detailed information on their stats, skills, and inventory.

-- fixed: units with 0 health (but no remaining wound levels) were included in deployment, even though they'd just poof off the battlefield the moment the first turn started.

-- fixed: a bug where an animation event at the conclusion of the pop-up damage "bounce" wasn't firing correctly.

??? / Re: A new engine!
« on: January 27, 2019, 11:27:47 AM »
-- I decided that RosterToList was not robust enough for all of my purposes, so I've created an additional script action that lets you drill down and create a List of units who meet a variety of specific criteria: UnitsToList! UnitsToList has 4 parameters: (1) the name of the list to populate with the results; (2) the army number (if in battle) or roster number (if not in battle) to draw from; (3) a list of stat conditionals all of the units have to meet to get on the list, delimited with bars (|); and (4) a list of attribute or tag conditions all of the units have to meet to get on the list, delimited with bars (|).

    -- each stat conditional in UnitsToList functions like the first 3 parameters in IfStatRun; each contains three parts (though in this case, delimited with colons): the name of the stat to check:the comparison method:the value to check it against. (To get units with Level greater than 5, for instance, you'd use Level:g:5). You can use string stats here as well, though the comparison method becomes true or false. (To get units whose Class is not Axefighter, for instance, you'd use Class:false:Axefighter).
    -- the attribute/tag conditionals in UnitsToList function similarly to the string stats in the stat conditionals; but instead of specifying a stat name, you'll use Personality, Physical, Life Skill, or Tag. (To get characters with a Serious personality trait, for instance, you'd use Personality:true:Serious.) Tags can take an additional part, for matching tags with a particular value assigned to them. (To get characters with a TargetValue,2 tag, for instance, you'd use Tag:true:TargetValue:2.)

So! Let's say that you've got a battle, and you want to run a custom event on turn 12 where a bunch of units are hit with a status effect due to some sort of crazy psy-related event. Suppose you need a List of every character in army 0 who has Mental Resistance less than or equal to 25, is not a Golem, and lacks the custom tag EventImmune. That's one army number, two stat conditionals, and one attribute conditional. Here's how you'd use UnitsToList to create that List of units to affect:

Code: [Select]
UnitsToList/AffectedUnits,0,Mental Res.:l=:25|Race:false:Golem,Tag:false:EventImmune
Given how complex UnitsToList can be to use, I've left RosterToList in the game as a quick-and-easy alternative for times we just need to quickly get a list of the player's characters outside of battle without being too picky about it.

??? / Re: A new engine!
« on: January 26, 2019, 10:08:37 PM »
-- improved the stat modification effects of "superb" and "peerless" quality on generated shields and main gauches by 1 and 2, respectively.

Telepath Tactics Multiplayer Maps / Re: Random Maps I made
« on: January 25, 2019, 03:17:15 PM »
Okay installdisc! Looking at map_mod_3.xml, it seems the map editor has the correct coordinates for all of your units marked down--I'm surprised that the game is messing up their start locations.

My best guess is that this is happening because multiplayer maps are designed for custom teams drawn from each player's roster. Have you tried making this a single-player map?

??? / Re: A new engine!
« on: January 25, 2019, 03:05:23 PM »
-- implemented the Post-Battle Looting condition in-game! If set to true, all loose item sacks on the battlefield are gathered up and put into the player's reserve supplies after the player wins the battle.

-- added a new, optional 16th parameter to the script actions GenerateUnit and GenerateUnique: auto-recruit. Takes an integer from 0-9. If used, it recruits the generated unit to the specified roster as soon as the unit is generated.

-- GenerateUnit and GenerateUnique can now be used in cut scenes! The easiest way to make units generated in this fashion usable will be to auto-add them to a roster; however, when a unit is generated via GenerateUnique in a cut scene, the game will set the custom string _GeneratedUnit equal to their name, enabling you to easily reference the new character for other purposes (like dialogue and a subsequent AddSpeakerPortrait action, for instance).

-- the game will now no longer generate characters with the same first name as any other saved character (i.e. any character that's in the player's army), or as any other character in the same recruitment line-up.

-- fixed: the cut scene editor threw a null error when trying to add the "Click to continue" text at the bottom of cut scene narration in the preview pane.

-- fixed: you couldn't select empty save slots to save in mid-battle.

-- fixed: when, multiple pages into the new object window, you started typing to narrow down the listed objects, the game would display the same (usually blank) page of the narrowed results instead of showing you the first page of results.

??? / Re: A new engine!
« on: January 24, 2019, 04:18:44 PM »
-- added a new battle to the game with tutorials on busting open treasure chests and grabbing item sacks.

-- spruced up a couple of the other, pre-existing battles to make them more interesting.

-- wrote more Arena dialogue.

-- created a save menu that lets you choose what slot to save your game in (instead of having to overwrite the slot you began the game in).

-- the mid-battle save button now opens the new save menu instead of just automatically overwriting your previous save from the start of the battle.

-- created a "check box" UI element for handling simple boolean values.

-- implemented the check box in the dialogue editor to enable the toggling on or off of (a) dialogue tree repeatability and (b) whether the input text field should be shown on a dialogue branch.

-- implemented the check box in the cut scene and map editors as a way to set scenes to "unsaveable," meaning that the game won't auto-save during them and the player won't be offered the option to save manually. Intended for use during "Game Over" scenes, end credits scenes, and other scenes that would render the save file unusable if the game were saved in them.

-- created a "number picker" UI element for allowing the player to increment and decrement integer values.

-- redesigned the mechanism for switching between rosters in the Edit Rosters window using the number picker (unsurprisingly, testers had found the old design--which used a text field--to be unintuitive).

-- the game now saves a saveability attribute for scenes, and loads it when scenes are loaded. (If the game doesn't find the attribute, it just assumes the scene is saveable by default.)

-- updated the font on the input text field to match the font used everywhere else in the game.

-- changed the inventory input field in the Unit Properties window in the map editor to multiline.

-- fixed: when a cut scene with an active dialogue window was open in the cut scene editor and the player tried to load a new cut scene, the game would fail to refresh the cut scene preview in the editor.

-- fixed: the map editor would ignore your chosen facing when painting a generated unit onto the map.

-- fixed: the map editor would swap the values for each unit's inventory and triggers when first loading up a map.

??? / Re: A new engine!
« on: January 23, 2019, 04:30:32 PM »
Lots of artist feedback today! Beyond that:

-- created missing directional variants for the cave wall fill objects, cave wall tunnel objects, and lit cave wall tunnel objects.

-- added 'Z' as hotkey for Undo in the map editor; added the + and - keys as hotkey shortcuts for Elev+ and Elev- in the map editor.

-- added mouseover tooltips to the Undo, Elev+, and Elev- buttons displaying the new hotkey shortcuts.

-- fixed an out-of-range error in the map editor.

Pages: 1 ... 3 4 [5] 6 7 ... 252