Several new special nodes

- A set of nodes for building complex strings in a string buffer; to reference the string buffer anywhere a string is expected, you can use -8 as the string number
- A node to pause the action for a specified period of time
- Nodes to alter traits, action points (only in combat), and PC/monster names
- Node to create a new level 1 PC with a specified race, name, graphic, hp, sp, basic stats; custom graphics supported too
- Nodes to test for deadness, spells, alchemy, and status effects
- Node to centre the view on an arbitrary space
- Node to lift the "fog of war", which currently means the unseen and light masks (which can actually be disabled in preferences anyway)
- Node to edit maps (ie, specify which areas are explored)
Changes to existing nodes:
- All the rectangle nodes that affect terrain now work outdoors.
- Play sound node now has an asynchronous option
- Fix min and max modes being swapped in the check statistic node
- Select PC now allows restricting to dead PCs or to PCs with free inventory space
- Select PC now calls the "on cancel" node if a non-interactive selection fails
- Affect deadness node now allows: setting/clearing the "fled outdoor combat" flag; setting/clearing the "absent" flag used for splitting the party; (un)deleting a PC
- If context node can now check if the party is in a specific boat/horse as opposed to any boat/horse
This commit is contained in:
2015-01-16 22:57:39 -05:00
parent e5f44de4fe
commit c5e302e0cc
20 changed files with 661 additions and 156 deletions

View File

@@ -269,6 +269,9 @@ short choose_text(eStrType list, unsigned short cur_choice, cDialog* parent, con
case STRT_COST_ADJ:
strings = {"Extremely Cheap", "Very Reasonable", "Pretty Average", "Somewhat Pricey", "Expensive", "Exorbitant", "Utterly Ridiculous"};
break;
case STRT_STATUS:
strings = {"Alive", "Dead", "Dust", "Petrified", "Fled Outdoor Combat", "Absent", "Deleted"};
break;
}
if(cur_choice < 0 || cur_choice >= strings.size())
cur_choice = 0;
@@ -629,6 +632,10 @@ static pic_num_t choose_status_effect(short cur, bool party, cDialog* parent) {
}
static bool edit_spec_enc_value(cDialog& me, std::string item_hit, node_stack_t& edit_stack) {
static const ePicType pics[10] = {
PIC_TER, PIC_MONST, PIC_DLOG, PIC_TALK, PIC_ITEM,
PIC_PC, PIC_FIELD, PIC_BOOM, PIC_MISSILE, PIC_STATUS
};
std::string field = item_hit.substr(0, item_hit.find_first_of('-'));
char btn;
eSpecType type = edit_stack.top().node.type;
@@ -739,6 +746,13 @@ static bool edit_spec_enc_value(cDialog& me, std::string item_hit, node_stack_t&
case '%': strt = STRT_COST_ADJ; title = "What cost adjust?"; break;
case '*': strt = STRT_CONTEXT; title = "What context?"; break;
case ':': strt = STRT_STAIR_MODE; title = "Select trigger limitations:"; break;
case 'w': strt = STRT_STATUS; title = "Select status:"; str_adj = 1; break;
case '0': case '1': case '2': case '3': case '4':
case '5': case '6': case '7': case '8': case '9':
choose_string = false;
store = choose_graphic(val, pics[btn - '0'], &me);
if(store < 0) store = val;
break;
case '#':
choose_string = false;
store = val;

View File

@@ -10,6 +10,7 @@ enum eStrType {
STRT_PICT, STRT_SND, STRT_CMP, STRT_ACCUM, STRT_TRAP,
STRT_ATTITUDE, STRT_STAIR, STRT_LIGHT, STRT_CONTEXT,
STRT_SHOP, STRT_COST_ADJ, STRT_STAIR_MODE, STRT_TALK_NODE,
STRT_STATUS,
};
bool cre(short val,short min,short max,const char *text1,const char *text2,cDialog* parent) ;