Files
oboe/src/scenario/special-general.cpp

211 lines
6.7 KiB
C++

//
// special-general.cpp
// BoE
//
// Created by Celtic Minstrel on 2025-02-18.
//
#include "special.hpp"
#include "special-conditions.hpp"
// Note: If adding a new node type below, be sure to adjust the end point here too.
node_category_info_t CAT_GENERAL{eSpecType::NONE, eSpecType::STR_BUF_TO_SIGN};
namespace{
node_properties_t S_NONE = node_builder_t(eSpecType::NONE);
node_properties_t S_SETFLAG = node_builder_t(eSpecType::SET_SDF)
.sdf()
.msg();
node_properties_t S_INCFLAG = node_builder_t(eSpecType::INC_SDF)
.sdf()
.msg()
.ex1b(eSpecPicker::TOGGLE);
node_properties_t S_MSG = node_builder_t(eSpecType::DISPLAY_MSG)
.msg();
node_properties_t S_SHOP = node_builder_t(eSpecType::ENTER_SHOP)
.msg1(eSpecPicker::MSG_SINGLE)
.ex1a(STRT_SHOP)
.ex1b(STRT_COST_ADJ)
.jump(eSpecPicker::NONE)
.no_preview();
node_properties_t S_MSG_SM = node_builder_t(eSpecType::DISPLAY_SM_MSG)
.msg()
.no_preview();
node_properties_t S_FLIPFLAG = node_builder_t(eSpecType::FLIP_SDF)
.sdf()
.msg();
node_properties_t S_RANDFLAG = node_builder_t(eSpecType::SDF_RANDOM)
.sdf()
.msg();
node_properties_t S_ADDFLAG = node_builder_t(eSpecType::SDF_ADD)
.sdf()
.sdf(eSpecField::EX1A, eSpecField::EX1B)
.sdf(eSpecField::EX2A, eSpecField::EX2B)
.msg();
node_properties_t S_SUBFLAG = node_builder_t(eSpecType::SDF_DIFF)
.sdf()
.sdf(eSpecField::EX1A, eSpecField::EX1B)
.sdf(eSpecField::EX2A, eSpecField::EX2B)
.msg();
node_properties_t S_STORY = node_builder_t(eSpecType::STORY_DIALOG)
.msg1(eSpecPicker::MSG_SINGLE)
.field_pair(eSpecField::MSG2, eSpecField::MSG3, eSpecPicker::MSG_SEQUENCE_VAR)
.pic();
node_properties_t S_PREVENT = node_builder_t(eSpecType::CANT_ENTER)
.msg()
.ex1a(eSpecPicker::TOGGLE)
.when(eSpecField::EX1A < 1, 1)
.ex2a(eSpecPicker::TOGGLE)
.end();
node_properties_t S_TIME = node_builder_t(eSpecType::CHANGE_TIME)
.msg();
node_properties_t S_TIMER = node_builder_t(eSpecType::SCEN_TIMER_START)
.msg()
.ex1b(+eSpecPicker::NODE);
node_properties_t S_SND = node_builder_t(eSpecType::PLAY_SOUND)
.ex1a(eSpecPicker::SOUND)
.ex1b(eSpecPicker::TOGGLE)
.no_preview();
node_properties_t S_HORSE_OWN = node_builder_t(eSpecType::CHANGE_HORSE_OWNER)
.msg()
.ex1a(STRT_HORSE)
.ex2a(eSpecPicker::TOGGLE);
node_properties_t S_BOAT_OWN = node_builder_t(eSpecType::CHANGE_BOAT_OWNER)
.msg()
.ex1a(STRT_BOAT)
.ex2a(eSpecPicker::TOGGLE);
node_properties_t S_TOWN_VIS = node_builder_t(eSpecType::SET_TOWN_VISIBILITY)
.msg()
.ex1a(STRT_TOWN)
.ex2a(eSpecPicker::TOGGLE);
node_properties_t S_EVENT = node_builder_t(eSpecType::MAJOR_EVENT_OCCURRED)
.msg()
.ex1a(eSpecPicker::EVENT);
node_properties_t S_FORCEGIVE = node_builder_t(eSpecType::FORCED_GIVE)
.msg()
.ex1a(STRT_ITEM)
.ex1b(eSpecPicker::NODE);
node_properties_t S_BUYTYPE = node_builder_t(eSpecType::BUY_ITEMS_OF_TYPE)
.msg()
.ex1a(eSpecPicker::ITEM_CLASS)
.ex1b(eSpecPicker::NODE);
node_properties_t S_GLOBAL = node_builder_t(eSpecType::CALL_GLOBAL)
.jump(+eSpecPicker::NODE)
.no_preview();
node_properties_t S_SETROW = node_builder_t(eSpecType::SET_SDF_ROW)
.no_preview();
node_properties_t S_COPYFLAG = node_builder_t(eSpecType::COPY_SDF)
.sdf()
.sdf(eSpecField::EX1A, eSpecField::EX1B)
.no_preview();
node_properties_t S_PICTURE = node_builder_t(eSpecType::DISPLAY_PICTURE)
.msg1(eSpecPicker::MSG_SINGLE)
.ex1a(PIC_FULL)
.ex1b(PIC_DLOG);
node_properties_t S_REST = node_builder_t(eSpecType::REST)
.msg();
node_properties_t S_MSG_TITLE = node_builder_t(eSpecType::TITLED_MSG)
.msg()
.msg3(eSpecPicker::MSG_SINGLE)
.pic();
node_properties_t S_END_SCEN = node_builder_t(eSpecType::END_SCENARIO)
.no_preview();
node_properties_t S_SETPTR = node_builder_t(eSpecType::SET_POINTER)
.sdf()
.ex1a(eSpecPicker::POINTER)
.no_preview();
node_properties_t S_CAMPFLAG = node_builder_t(eSpecType::SET_CAMP_FLAG)
.sdf()
.msg1(+eSpecPicker::MSG_SINGLE)
.ex2a(eSpecPicker::TOGGLE)
.no_preview();
node_properties_t S_DEBUG = node_builder_t(eSpecType::PRINT_NUMS)
.pict(STRT_DEBUG_PRINT)
.when(eSpecField::PICT == 0, 1)
.sdf()
.end()
.when(eSpecField::PICT == 1, 1)
.ex1a()
.ex1b()
.ex1c()
.end()
.when(eSpecField::PICT == 2, 2)
.ex1a()
.end()
.no_preview();
node_properties_t S_MULFLAG = node_builder_t(eSpecType::SDF_TIMES)
.sdf()
.sdf(eSpecField::EX1A, eSpecField::EX1B)
.sdf(eSpecField::EX2A, eSpecField::EX2B)
.msg();
node_properties_t S_DIVFLAG = node_builder_t(eSpecType::SDF_DIVIDE)
.sdf()
.sdf(eSpecField::EX1A, eSpecField::EX1B)
.sdf(eSpecField::EX2A, eSpecField::EX2B)
.sdf(eSpecField::EX1C, eSpecField::EX2C)
.msg();
node_properties_t S_EXPFLAG = node_builder_t(eSpecType::SDF_POWER)
.sdf()
.sdf(eSpecField::EX1A, eSpecField::EX1B)
.sdf(eSpecField::EX2A, eSpecField::EX2B)
.msg();
node_properties_t S_TERCHANGE = node_builder_t(eSpecType::CHANGE_TER)
.msg()
.loc(eSpecField::EX1A, eSpecField::EX1B, eLocType::ACTIVE_AUTO)
.ex2a(STRT_TER);
node_properties_t S_TERSWAP = node_builder_t(eSpecType::SWAP_TER)
.msg()
.loc(eSpecField::EX1A, eSpecField::EX1B, eLocType::ACTIVE_AUTO)
.ex2a(STRT_TER)
.ex2b(STRT_TER);
node_properties_t S_TERTRANS = node_builder_t(eSpecType::TRANS_TER)
.msg()
.loc(eSpecField::EX1A, eSpecField::EX1B, eLocType::ACTIVE_AUTO);
node_properties_t S_BUF_CLEAR = node_builder_t(eSpecType::CLEAR_BUF)
.no_preview();
node_properties_t S_BUF_ADDSTR = node_builder_t(eSpecType::APPEND_STRING)
.ex1a(eSpecPicker::MSG_SINGLE)
.pict(eSpecPicker::TOGGLE)
.no_preview();
node_properties_t S_BUF_ADDNUM = node_builder_t(eSpecType::APPEND_NUM)
.pict(eSpecPicker::TOGGLE)
.no_preview();
node_properties_t S_BUF_ADDMONST = node_builder_t(eSpecType::APPEND_MONST)
.ex1a(STRT_MONST)
.pict(eSpecPicker::TOGGLE)
.no_preview();
node_properties_t S_BUF_ADDITEM = node_builder_t(eSpecType::APPEND_ITEM)
.ex1a(STRT_ITEM)
.pict(eSpecPicker::TOGGLE)
.ex1b(eSpecPicker::TOGGLE)
.no_preview();
node_properties_t S_BUF_ADDTER = node_builder_t(eSpecType::APPEND_TER)
.ex1a(STRT_TER)
.pict(eSpecPicker::TOGGLE)
.no_preview();
node_properties_t S_PAUSE = node_builder_t(eSpecType::PAUSE)
.no_preview();
node_properties_t S_TALK = node_builder_t(eSpecType::START_TALK)
.pict(PIC_TALK)
.ex1a(STRT_TALK)
.when(eSpecField::PICT == -1, 1)
.ex1b(STRT_MONST)
.end()
.jump(eSpecPicker::NONE)
.no_preview();
node_properties_t S_QUEST = node_builder_t(eSpecType::UPDATE_QUEST)
.msg()
.ex1a(eSpecPicker::QUEST)
.ex1b(STRT_QUEST_STATUS)
.when(eSpecField::EX1B == 1, 1)
.ex2a(eSpecPicker::JOB_BOARD)
.end()
.when(eSpecField::EX1B == 3, 2)
.ex2a()
.end();
node_properties_t S_BUF_SWAP = node_builder_t(eSpecType::SWAP_STR_BUF)
.msg();
node_properties_t S_ALTER_SIGN = node_builder_t(eSpecType::STR_BUF_TO_SIGN)
.msg1(eSpecPicker::MSG_SINGLE);
}