Welcome to the new Sinister Design forums!

Main Menu

A new engine!

Started by CraigStern, June 05, 2016, 05:39:11 PM

Previous topic - Next topic


-- finished the initial draft of the Qualifier battle!

-- received new generated portrait accessories from Matt: chin hair and Ravinale necklaces! Created positional data for each new accessory for each human face shape. Turned up the incidence of one accessory in human portraits to 35%, and 2 accessories to 15%.

-- fixed a bug in which the game would still try to display "empty" skills.

-- fixed a bug in which the game would return false positives for dialogue triggers using a script ID parameter where multiple characters with different script IDs nonetheless shared the same name (e.g. multiple OnCharDeath dialogues triggered by the scriptID of particular barrels would all be triggered by the scriptID for one of them because all shared the name "Barrel").

-- fixed a bug in which the game wouldn't trigger OnCharDeath or PostCharAttacked dialogues for destructible objects.


-- got a new background: castle!

-- created directional variants for all of the different chunks in the Cave tileset so that they can be painted in the map editor with auto-tiling support.


Spent most of today setting up some of the requisite systems to be able to sell True Messiah via the Sinister Design website! I did still get a bit of work done on the video game, though:

-- created tile data for all of the new cave tiles.

-- created a new cave "cliff fill" tile.

-- gave artist feedback on a few missing cave tile transitions.

-- fixed a bug where the map editor would not register a change in the map's "base" tileset when using a flood fill.


-- laid the groundwork for character Moods, which last for a set number of days and can override the character's normal array of activities. They can also add little descriptors onto existing activity narration and impose enduring status effects.

-- created a new Status Effect (accompanying icon): Sick. Sick characters have doubled Energy costs for skills, and do not regain energy while resting in battle.

-- the AddStatus script actions now have two additional, optional parameters: Force Length and Force Power. These let you edit the length and power of the status effect being conferred from their default values.

-- updated certain camp activities with alternate backgrounds.


-- got moods working!

-- obtained the handful of missing cave tiles; implemented them in-game.

-- wrote new event: Sick (a character comes down with an illness for 1-3 weeks).

-- fixed a few dumb bugs I'd accidentally introduced.


-- received and integrated the sunset variant for the Clearing cut scene background.

-- created water and lava transition tiles for the cave tileset.

-- the character creator now correctly saves and loads accessories with Custom portraits.

-- the game now supports custom pronouns for characters (they can be set during the "gender" step in the character creator). Characters using custom pronouns will have their pronouns appear as a three-entry, /-delimited list under the pronouns attribute in their entry in PremadeUnits.xml. (Characters lacking a full set of 3 custom pronouns will simply use the traditional pronouns for their sex.)


-- added two new optional parameters to the ShowRecruits script action: base cost and cost variance. Both are integers; the first adds a set amount to the salary of all recruitable units generated, while the second randomly adds or subtracts a number between 0 and its value to the salary of each unit generated.

-- generated characters now have a "Salary" stat equal to their recruitment cost. (Like all other stats, it can edited with SetStat.)


-- reworked the ShowRecruits salary variability parameter so it operates as a percentage increase or decrease instead of behaving as a flat addition/subtraction.

-- used the new ShowRecruits parameters to add random variability to recruit salaries in the campaign; they can vary by as much as 25% in either direction from the game's baseline calculation of how much the unit is "worth."

-- base cost and % cost variability parameters have now been added onto the GenerateUnit and GenerateUnique script actions, with identical effects upon the salaries of their generated units.

-- base cost and % cost variability parameters have now been added onto Generate: and Unique: unit tags in battle maps, allowing units generated in this fashion to also access the corresponding salary calculation parameters.

-- Shops now support the use of -VAL:- characters when defining their basic parameters (costMultiplier, baseSalePrice, itemQuality, qualityVariance, and foodCost)! This allows you to change a shop's parameters dynamically throughout the game by reference to other variables you might be tracking.


<Shop costMultiplier="-VAL:ItemPriceLvl-" baseSalePrice="0.5" itemQuality="-VAL:ItemQuality-" qualityVariance="2" foodCost="-VAL:FoodPriceLvl-">Agarwal's

Item quality and quality variance are integers, so the game just plugs in the integer value for whatever -VAL:- variable you pick. However, the other shop parameters take float values with decimals, so they're a little trickier to set with -VAL:-. To get the integer from -VAL:- into a useful float format, the game divides the value by 100 (thus, effectively treating it like a percentage). So for example: suppose you have a shop with costMultiplier that references -VAL:CostMult-. If you wanted to increase the cost multiplier by 0.1 during the game (say, because the player did something to piss off the shop owner), you'd use SetVal to add 10 to CostMult.

-- finally implemented costMultiplier and baseSalePrice as a factor in setting item values in-engine.

-- used the new -VAL:- character support in Shops to perform preliminary work allowing changes in item price and quality over the course of the game.

-- added a difficulty selection to the start of the game, with two modes: "Relaxed" or "Challenging." As of right now, the choice impacts base prices for recruits, items, and food. Eventually, my intention is that it will impact the likelihood of bad events occurring during the game as well as how smart the AI is during fights.

-- fixed an obscure and insidious bug wherein the game would sometimes change the order of the actions in a script that had been called by another script action. (This would result in disastrous situations like scripts that ended with NextScene instead running NextScene first, thereby ensuring that the remainder of the script never executed at all.)

-- fixed an exceedingly dumb bug in which the game would not properly parse special characters which placed hyphens right next to one another; the issue was, it would go through and replace the -- with an em-dash beforehand, and therefore wouldn't recognize the special characters of which each hyphen was a part. (Among other things, this made it impossible to use -NL- to start a new line beginning with -NAME- or any sort of variable value.)


-- rewrote character mood code to support more than one concurrent mood, permitting correct handling of multiple different mood-related status effects. (The game will still only reference the mood with the highest power rating during camp activities, but weaker moods with longer durations will resume after the strongest one ends.)

-- mood durations now tick down in accordance with the Calendar condition in cut scenes.

-- mood durations now automatically tick down in accordance with the number of days passed when passing > 0 days using the SetDaysPassed script action.

-- new special character: -DAYOFTHEWEEK-. Returns an integer value between 0 and 6 representing whatever day of the week it currently is in-game.

-- new supported custom cut scene menu warning parameter: dayOfTheWeek. Allows you to gray out a menu button (or display a pop-up warning) for certain days of the week.

-- main body text in custom cut scene menus now supports the use of special characters! For example:

<Menu txt="It is LIST{WeekdayNames,-DAYOFTHEWEEK-}. How will you spend the daylight hours?">Town

-- came up with names for all the days of the week in the game world, ones just similar enough to real-life day names to be intuitive: Moonday, Truthsday, Weddingsday, Starsday, Fireday, Shadowday, Sunday.

-- used new -DAYOFTHEWEEK- functionality to make the in-game item shop give the player a 10% price discount if they visit on Weddingsday.


-- new special character: -DAYOFTHEMONTH-. Returns an integer value between 0 and 27 representing whatever day of the month it currently is in-game.

-- new special character: -PAYROLL-. Returns the current combined monthly salary for everyone in the current roster.

-- new special character: -APPETITE-. Returns the current combined daily food consumption for everyone in the current roster.

-- added all existing special characters into ActionsReplies.xml for future in-game documentation purposes.

-- scripted a monthly payment system, along with periodic reminders to the player as payday approaches and a custom event for failing to pay everyone that results in morale taking a massive -10 hit across the board.

-- new random event: a travelling merchant visits the camp, offering the opportunity for a "free" shopping timeslot (albeit at the cost of substantially higher prices).

-- new random event: a travelling mechanic visits the camp, offering the opportunity for a "free" recruitment timeslot purchasing golems.


-- created an 8th chin hair variant: a braided goatee.

-- received, added the new night variant for the Clearing background.

-- implemented the Dese villager portrait assets in-game.

-- wrote some new last name beginnings and endings for generated characters.


-- received, added new castle throne room background.

-- received, added new night and sunset variants for the Ship background.

-- updated the AddPortrait action so you can use generic portraits with it. To do so, start with Generic| for the portrait name parameter; then add the class name, then cap it off with _M or _F. For instance:

AddPortrait/Mechanic Spearman,Generic|Spearman_M,right


-- coded basic autotiling for elevated spaces. This automatically subs in more natural-looking cliff edge tiles for the blocky default tiles when painting terrain of varying elevations in the map editor.

-- added support for camp activities changing the mood of one or more characters.

-- fixed a few oversights in the tile data.

-- fixed a bug in which character portraits would sometimes inappropriately remain onscreen during camp activities when transitioning from a non-dialogue activity to a dialogue activity.

-- fixed a bug in which reverting to the default menu text after receiving a menu button warning would undo the processing for special characters in the default text.

-- fixed a crash bug that would sometimes during camp activity text where a character directly addresses the player.


-- when characters aren't paid, they now get one of several negative moods that can last for as long as a week.

-- did some work creating new premade enemy units for the new campaign.


-- created an original battle to serve as the first "real" arena fight in the game.

-- took a stab at recreating one of the early fights from TPA1 in the new engine to serve as arena fight #2.

-- updated the arena scene with new dialogue and scripting leading to the new fights.

-- new dialogue trigger: OnVictory. One parameter: army number (or -1 for any army). Triggers dialogue as soon as the specified army wins the battle, before the victory splash shows up.

-- received, integrated the nighttime variant for the Dese Market background.

-- commissioned some new unit portraits.

-- gave artist feedback on new battle music (which is very close to finished!)