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] 2 3 ... 250
??? / Re: A new engine!
« on: Yesterday at 03:22:13 PM »
-- added error sound effects for clicking Action Bar buttons while they are redded out.

-- you can now use -1 as the Y or X coordinate in the SpawnUnit and GenerateUnit script actions to make the game spawn the unit on a randomly chosen space a suitable minimum distance from all other armies.

-- created a quasi-randomized battle for the main campaign. (The map and player starting positions are designed, but the types of enemies that spawn--and where they spawn--are quasi-random, as is some of the foliage). This battle is now used for pick-up fights between when the League 1 qualifier is scheduled and when it occurs.

-- the level parameter in GenerateUnit now supports the use of a numerical range in the same manner as generated units added directly to battlefields do.

-- when using an item, the character screen now automatically closes so the player can see the relevant pop-ups.

-- when using an item, the actions bar is now updated to reflect any changes (new skills, changed ability to use existing skills due to changes in energy, etc.)

-- fixed: the Undo button would leave dummy attack tiles visible on the battlefield if pressed while also moused over a skill button.

-- fixed: the game wasn't redding out the Rotate button after a character turn automatically ended following an End Turn skill.

-- fixed: description text in tooltips for the icons in the army overview screen cut off on certain displays.

-- fixed a null error lurking in the dialogue tree editor related to sound playback.

??? / Re: A new engine!
« on: March 22, 2019, 02:25:56 PM »
Artist feedback! Also:

-- began writing out the first big plot-advancing encounter of the game.

-- fixed a few scripting issues in the new random event.

-- fixed: if a character leveled up with the battle-winning blow and the experience bar / glowy ring animations didn't complete before the level-up screen popped up, they would remain frozen onscreen below the victory box even after the level-up screen was closed.

-- fixed: saved game slots for mid-battle saves were displaying the turn number in a way that was technically correct from the standpoint of how the code works (starting from 0 and counting as of the last completed turn), but nonsensical from the perspective of the player.

-- fixed: the game was not culling melee attacks from non-flying units across elevation differences greater than 1.

-- fixed: the AI was calculating the value of using Health and Energy-restoring consumables incorrectly.

-- fixed: the AI was incorrectly adding to item score by acting as though there were a granted skill on items that grant no skills.

-- fixed: the AI algorithm for determining whether to use an item was not being applied to long-term moves.

-- fixed a null error arising out of the procedure for re-adding battlefield holds when loading up a mid-battle save.

??? / Re: A new engine!
« on: March 20, 2019, 02:01:53 PM »
-- new script action: ChangeNarration. Cut scene only; replaces the narration text for the current frame of the cut scene. Takes one parameter: the new narration text to display.

-- new script action: GoToFrame. Cut scene only; jumps to the specified frame of the cut scene. Takes one parameter: frame number.

-- new script action: DismissByName. Works just like RecruitByName, but it dismisses the character from one or more rosters instead of adding them. Two parameters: character name and roster number (optional; if not used, dismisses from all rosters).

-- scripted a new (somewhat involved!) random event that can happen in camp.

-- units now possess a boolean property internal to themselves that lets the game know if they are generic or unique. The game now uses this property to decide which characters gain experience during battle, not whether they are on a player-controlled army. (Only non-generic characters gain experience.)

-- the game now assigns generic or non-generic status to proc gen units as appropriate.

-- the character creator now starts off the character creation process by giving the player a clear choice between creating a unique character or a generic unit type, with an explanation of how they differ. (The "generic" option is no longer an ill-explained button hidden in the portrait creator.)

-- the game successfully parses the isGeneric property for pre-made units. The character creator now successfully loads and saves the isGeneric property for characters.

-- fixed: the folder and portrait data for the generic Dark Spriggat portraits were mislabeled.

-- fixed: in rare instances, it was possible to select an object by clicking on a space where a character stood on top of an object.

-- fixed: the AI was not removing dead units from its internal list of allied healers when they died.

??? / Re: A new engine!
« on: March 18, 2019, 03:21:34 PM »
-- new script action: ShowCharacterScreen. Automatically opens the character screen for a unit. Takes one parameter: the character's name. (If the named character is not found in the scene or among saved characters, the screen simply doesn't open.)

-- new script actions: ChangeTriggerCharacter and ChangeSecondaryCharacter. These let you swap out the the units whom the dialogue considers the triggering and secondary characters, thereby allowing you to use special characters with different units. Each takes one parameter: the character's name.

-- right-clicking bridge segments now only brings up their info screen only if the bridge segment clicked is above liquid or a chasm; if right-clicking a bridge that overlaps a solid terrain tile, the game treats it as a right-click on the terrain (i.e. a cancel click).

-- fixed: wasn't saving active holds on spaces for mid-battle saves.

??? / Re: A new engine!
« on: March 17, 2019, 12:54:47 PM »
-- fixed: the game wasn't saving triggers on units, causing traps to cease functioning upon reloading mid-battle saves.

-- fixed a null error involved in loading reserve supplies brought about by Friday's fix re: saving of the runsScripts property on items.

??? / Re: A new engine!
« on: March 15, 2019, 02:25:30 PM »
-- the game now counts down status effects on destructible objects (and, where appropriate, damages them) at the end of each round in battle.

-- the battlefield camera boundaries now shift dynamically to accommodate things like the deployment screen and camera zoom-in during attacks.

-- shoving a unit into a liquid tile now treats the fall height as 1 unit lower for purposes of falling damage and stunning.

-- added a new tile phase to the game: void. Like liquid phase tiles, these get positioned a half-step lower than solid tiles on the battlefield; but unlike liquid phase tiles, they don't soften the landing for units shoved into them. To the contrary, any fall into a void tile is automatically treated like a 25-height fall (meaning that it does an immediate, unavoidable 100 damage and 24 continuous turns of Stunned status!)

-- chasm tiles are now void tiles.

-- reduced the default value of the accuracy constant in the game's AI so that AI-controlled characters won't choose heavily armored targets over targets with Dodge so consistently.

-- fixed: the game would sometimes act as though the player was clicking an object instead of the character standing on top of it.

-- fixed: the game wasn't saving the runsScripts property of items contained in unit inventories.

-- fixed: the game was inappropriately detecting a mid-battle save when saving at the conclusion of a battle.

-- fixed: the game wasn't displaying the status effect indicator on status-effect-bearing units after reloading a mid-battle save.

-- fixed: the game was treating empty bridge spaces as full for purposes of building non-bridge destructible objects with Create skills.

??? / Re: A new engine!
« on: March 14, 2019, 03:10:14 PM »
-- the game now actively prevents the camera from panning more than a little bit off the edge of the level. (I finally gave up on using a fancy physics-based solution and just went with magic numbers--no sense sinking more time into a fancier solution than the game needs when there's so much else to be done!)

-- the game now actively shifts character tooltips around to keep them entirely onscreen when mousing over units near the screen's edges during battle.

-- for mid-battle saves, all of the game's save and load game screens (as well as the slot selection screen when starting a new game) now display the turn number on which the battle was saved.

-- created alternate versions of the healing tutorial in the main campaign based on the selected difficulty (and the corresponding Death Rules).

-- fixed: the game would sometimes lock up when an AI character grabbed an item sack, then immediately turned and attacked an adjacent enemy.

-- fixed: the AI would sometimes run two character's moves concurrently if an experience bar stopped animating midway through the first character's move.

-- fixed: the game would sometimes lock up when the player completed a battle.

-- fixed: the experience bar and level-up animations did not reflect the lower level-up threshold for characters possessing points of Aptitude.

??? / Re: A new engine!
« on: March 13, 2019, 03:11:00 PM »
-- the game now plays the Telepath victory fanfare when the victory box appears at the end of a successful battle.

-- the parameters for Generate: and Unique: spawns in battle now support special characters (most significantly, the PICK{}, -STR:-, -VAL:-, and LIST{} special characters).

-- tuned the game's default AI to make enemies less likely to retreat in lieu of making a sub-optimal short-term move.

-- fixed: a custom variable in the main campaign wasn't being set properly.

-- fixed: AI-controlled units that were Stunned or Frozen were being removed from the AI's internal list of its own army entirely.

-- fixed: the level-up handler class was inappropriately saving stat increases from prior character level-ups and applying them again with subsequent level-ups.

-- fixed a typo in certain camp activity narrations.

-- fixed: the recruitment interface was producing large relative level variations for recruits at low levels. It now permits a variation of 1 level per 4 base levels it generates with, but no variation for units generated at level 3 or less.

-- fixed: the game was not properly saving the Death Rules condition during mid-battle saves.

??? / Re: A new engine!
« on: March 12, 2019, 02:51:00 PM »
-- wrote dialogue for the League 1 Qualifier battle, including an optional recruitment conversation.

-- new special characters: -TIC2- and -LAUGH2-. These get replaced with the tic and laugh lines for the second character in the conversation.

-- the second parameter of SetString now supports the use of ID[] characters.

-- the "generate unit inventory" field in the map editor's generate unit window has been changed to a check box (which is decidedly easier to interact with than typing out "true" or "false" every time).

-- fixed: the game would fail to add custom tags and triggers to unique procedurally generated characters.

-- fixed: you could force the game to use an unsupported species for procedurally generated instances of the spirit, spriggat, and golem classes, which would ultimately produce a null error.

-- fixed: the dialogue menu would only successfully reference saved characters when processing text in battle (as opposed to any unit on the battlefield).

-- fixed: the game would throw a null error if you tried to use AddStatus on a character that didn't exist, or SetStat in a cut scene before any characters existed among the saved units yet.

??? / Re: A new engine!
« on: March 11, 2019, 03:05:57 PM »
-- created a new battle immediately preceding the league 1 qualifier, "Battle on Sandy Isles," introducing flying enemies and golems.

-- new script action: SetNextScene. Changes the scene's nextbattle attribute to a different scene, but does not immediately transition to that scene. One parameter: scene name.

-- created a scene in the main campaign that schedules league qualifier matches for particular days.

??? / Re: A new engine!
« on: March 09, 2019, 01:25:47 PM »
-- created new attributes for procedurally generated armor: Padded (+20 Crush Res.), (Insulated +15 Heat and Cold Res.), Lead-lined (+15 Shadow and Light Res.), Gleaming (+7 Dodge), and Gaudy (wearer is 20% more heavily weighted as a target by the AI).

-- when dealing with generic units who don't have weapons equipped, the game now checks for the corresponding weapon skill for purposes of ModPowerVsWeapon. (For instance: Bloodbeard's Bandits don't generally have axes equipped, but they do know the Axe skill naturally. This change means that ModPowerVsWeapon,,Axe,+:5 will still result in +5 damage to them.)

-- fixed: the game wasn't assigning a base class to procedurally generated characters.

-- fixed: the game was calculating distance past minimum for player-initiated ranged attacks incorrectly.

-- fixed: the game wasn't turning off the "selected" animation for characters who were simply deselected.

??? / Re: A new engine!
« on: March 08, 2019, 04:29:51 PM »
Spent some time updating the web site and preparing an ad campaign to try to sell off the remaining stock of True Messiah. With my remaining time available today:

-- implemented two new tags: BackstabFactorPlus and SidestabFactorPlus. These take two parameters (1) the name of the skill that gets this bonus, and (2) a decimal float value. The float value gets added to the backstab/sidestab multiplier attributes for attacks with the specified skill (or, if parameter 1 is left blank, for attacks with every skill).

(Procedurally generated "Gap-seeking" weapons give the character these.)

-- implemented a new tag: DmgIgnoreRes. This takes two parameters (1) the name of the skill that gets this bonus, and (2) a decimal float value. The float value gets multiplied by the target's relevant resistance--this portion of the target's resistance is ignored for attacks with the specified skill (or, if parameter 1 is left blank, for attacks with every skill).

(Procedurally generated "Armor-piercing" weapons give the character this.)

-- implemented a new tag: ModSkillPower, which replaces the old ModDmgForAttack tag. ModSkillPower affects a skill's base damage for the character with the tag. (The tag's effects are calculated after all other base damage factors, but before anything relating to the skill's target--distance, elevation, the relevant resistance, etc.) Like ModSkillCost and ModSkillRange, ModSkillPower takes the skill name and the operation to perform on its base damage (e.g. +:1) as parameters.

-- implemented new tags: ModDmgVsClass, ModDmgVsMoveType, ModDmgVsSpecies, ModDmgVsTag, and ModPowerVsWeapon. Unlike the old ModDmgFor tags that they replace, these can operate on particular skills used by the character with the tag. Parameters are: (1) skill name (leaving this blank will apply the effect on all unit skills), (2) the particular class/gender/move type/species/tag/weapon type that triggers the operation, and (3) the operation. And unlike the ModSkillPower tag type, these affect final damage, after all other factors have been accounted for (including resistances).

For instance--for whatever character has this tag, no matter what skill they use, the game doubles the damage it does to units who are equipped with a weapon with a name containing the substring "Axe":

Code: [Select]
For the character with this tag, the game adds 99 to the damage done by the skill Death Gaze to units with the tag Vulnerable to Gaze:

Code: [Select]
ModPowerVsTag,Death Gaze,Vulnerable to Gaze,+:99
And so on.

-- added two new weapon modifiers to the item generator: "Anti-mount" (deals +6 damage to cavaliers) and "Flashy" (increases AI target value by 15%).

??? / Re: A new engine!
« on: March 07, 2019, 02:59:25 PM »
-- the map editor now supports procedurally generated unique characters, not just generics.

-- the space selector has been added to the map editor, making it way easier to tell what space you're painting or mousing over.

-- began designing the first boss battle of the game.

-- the game engine now supports movement sounds for characters (something I never got around to adding in on Telepath Tactics!)

-- created several movement sounds.

-- generated characters now receive move sounds appropriate to their species and class.

-- went through all premade characters and assigned them appropriate moveSound attributes.

-- two new string stats supported: Load ID and Move Sound. (When setting a new Load ID with SetStat, use a colon in place of a forward slash.)

-- when saving a scene to a file, the game now strips all forbidden characters out of the filename and replaces them with underscores.

-- fixed: after editing the properties of an object, the map editor would always set its army to 2.

??? / Re: A new engine!
« on: March 06, 2019, 02:33:58 PM »
-- created a neat little "expanding ring of sparkles" visual effect for when a character levels up!

-- there is now an animation showing you which character is currently selected during your turn: a little spark running around the circumference of the character's "ring."

-- in the shop interface, when you click on equipment that no one in your roster can use, the game now pops up a warning about it and provides you a chance to cancel the purchase.

-- the shop in the main campaign now prompts you to distribute items and equip equipment before you leave, with an option to immediately open the reserve supplies screen for that purpose.

-- the camp scene in the main campaign now displays the Hold Gathering button grayed-out after an event; if clicked, it explains that there is no longer time to hold one.

-- removed some incorrect information in the documentation for the ShowReserveSupplies action.

-- fixed: the game would remember which units had ended their turn when the previous battle concluded, and in subsequent cut scenes, the reserve supplies screen would prevent those units from interacting with their items (because their "turn ended" marker was still set to true).

-- fixed an off-by-1 math error that was causing the game to incorrectly position the reticles for certain AOE skills (and in the process, made the AI occasionally attack spaces that made no sense).

-- fixed: AOE reticle patterns that extended in whole or in part off the edge of the map were being pushed backward onto the map (and thus, appearing on the wrong spaces) instead of simply truncating the bits extending off the map. This, too, was causing the AI to sometimes target the wrong spaces with attacks.

??? / Re: A new engine!
« on: March 05, 2019, 04:08:02 PM »
-- created a game settings window with separate selectors to change global music, sound effect, and voice-over dialogue volume.

-- the new game settings window is now directly accessible from the title screen, and via the options window in both cut scenes and battles.

-- the game now saves all global volume settings to a file whenever they are changed, and successfully loads global volume settings whenever the game loads.

-- new script action: GetDistBetweenUnits. Battle only. Set an integer variable equal to the distance (in spaces) between two units, ignoring terrain and obstacles. Parameters: (1) character 1 name or ID[], (2) character 2 name or ID[], and (3) variable name. Parameter 3 is optional; if not used, the variable set will be _Dist.

-- new script action: GetDistToSpace. Battle only. Set an integer variable equal to the distance (in spaces) between a unit and a space, ignoring terrain and obstacles. Parameters: (1) character name or ID[], (2) Y coordinate, (3) X coordinate, and (4) variable name. Parameter 4 is optional; if not used, the variable set will be _Dist.

-- improved the game's behavior concerning multiple load IDs that match a saved character. Unless the spawning unit is spawning for an army matching the last army the saved character appeared in, the game simply will not use the saved version of the character; it'll convert from XML instead, and assign the new copy of that character a new unique ID in the process. (All units assigned to a roster in a cut scene that have not yet appeared in battle have a default "last army" of 0.)

Independent of the above, if the game ever creates a character and it detects another unit with the same unique ID already on the battlefield, it now assigns the new character a different unique ID. (Note: while this will allow the battle to proceed as normal, if the game saves a copy of a character that has been assigned a new unique ID, this will cause other characters to regard them as a stranger going forward. For this reason, it is generally a bad idea to spawn multiple copies of a character that is on a roster, or is otherwise saved as part of the player's army!)

Pages: [1] 2 3 ... 250