diff options
author | Joël Simoneau <simoneaujoel@gmail.com> | 2025-01-15 13:40:22 -0500 |
---|---|---|
committer | Joël Simoneau <simoneaujoel@gmail.com> | 2025-01-15 13:40:22 -0500 |
commit | 18416aa5490342334c53ab806d06669f5d17a5de (patch) | |
tree | 8f7532b2803ef5b0056a364e8aa17444d5c818fb /rules.js | |
parent | 33d213ce1547fa295854ade306e71b91c46460e9 (diff) | |
download | vijayanagara-18416aa5490342334c53ab806d06669f5d17a5de.tar.gz |
Basic event structure.
Diffstat (limited to 'rules.js')
-rw-r--r-- | rules.js | 553 |
1 files changed, 549 insertions, 4 deletions
@@ -8,6 +8,7 @@ let view = null const data = require("./data.js") const SPACES = data.spaces const SPACE_NAME = data.space_name +const CITIES = data.city function get_space_id(name) { return SPACE_NAME.indexOf(name); @@ -40,6 +41,15 @@ const S_VE_INF_2 = 23 const S_VE_INF_3 = 24 const S_VE_INF_4 = 25 +const C_CHITTOR = 0 +const C_DEVAGIRI = 1 +const C_GOA = 2 +const C_GULBARGA = 3 +const C_VIJAYANAGARA = 4 +const C_WARANGAL = 5 + +const SINGLE_EVENTS = [26] + const first_piece = data.first_piece const last_piece = data.last_piece const first_space = S_ANDHRA @@ -521,7 +531,6 @@ states.eligible = { states.main_phase = { inactive: "Eligible Faction", prompt() { - if (game.cmd && game.cmd.limited === 1) { view.prompt = "Select a limited Command." gen_any_command() @@ -532,7 +541,7 @@ states.main_phase = { } else if (game.cmd && game.cmd.event === 1) { view.prompt = "Select a Command or the Event." gen_any_command() - // gen_event() + gen_any_event() } else if (game.cmd) { view.prompt = "Select a Command." gen_any_command() @@ -559,6 +568,9 @@ states.main_phase = { rebel: goto_rebel, tax: goto_tax, trade: goto_trade, + event() { goto_event(0) }, + unshaded() { goto_event(0) }, + shaded() { goto_event(1) }, end_of_turn: resume_event_card, } @@ -2368,6 +2380,10 @@ function move_all_faction_piece_from(faction, type, from, to) { }) } +function is_adjacent_to_city(city, s) { + return set_has(CITIES[city].adjacent, s) +} + function is_selected_cmd_space(s) { return game.cmd.spaces && set_has(game.cmd.spaces, s) } @@ -3114,6 +3130,108 @@ function for_each_movable(faction, f) { } } +// === EVENTS === + +function gen_any_event() { + if (set_has(SINGLE_EVENTS, this_card())) { + view.actions.event = 1 + } else { + console.log("GEN ANY EVENT!") + view.actions.unshaded = 1 + view.actions.shaded = 1 + console.log(view.actions) + } +} + +function goto_event(shaded) { + push_undo() + let c = this_card() + + game.cmd = 0 + + if (shaded) { + log_h2(faction_name[game.current] + " - Shaded Event") + log("C" + c) + log(".i " + data.card_flavor_shaded[c] + ".") + log_br() + goto_vm(c * 2 + 1) + } else { + log_h2(faction_name[game.current] + " - Event") + log("C" + c) + if (data.card_flavor[c]) + log(".i " + data.card_flavor[c] + ".") + log_br() + goto_vm(c * 2 + 0) + } +} + +function end_event() { + game.vm = null + resume_event_card() +} + +function event_prompt(str) { + if (typeof str === "undefined") + str = CODE[game.vm.fp][game.vm.prompt][1] + if (typeof str === "function") + str = str() + view.prompt = data.card_title[this_card()] + ": " + str +} + +// === VM === + +function goto_vm(proc) { + game.state = "vm" + game.vm = { + prompt: 0, + fp: proc, + ip: 0, + ss: [], + s: -1, + pp: [], + p: -1, + m: 0, + } + vm_exec() +} + +function vm_exec() { + vm_inst(0)() +} + +function vm_inst(a) { + return CODE[game.vm.fp][game.vm.ip][a] +} + +function vm_log() { + log(vm_operand(1)) + vm_next() +} + +function vm_next() { + game.vm.ip ++ + vm_exec() +} + +function vm_operand(a) { + let x = CODE[game.vm.fp][game.vm.ip][a] + if (a > 0 && typeof x === "function") + return x() + return x +} + +function vm_return() { + game.state = "vm_return" +} + +states.vm_return = { + prompt() { + event_prompt("Done.") + view.actions.end_event = 1 + }, + end_event, +} + // === CONST === // Factions @@ -3151,5 +3269,432 @@ const SOP_LIMITED_COMMAND = 1 const SOP_COMMAND_DECREE = 2 const SOP_EVENT_OR_COMMAND = 3 const SOP_PASS = 4 -const INELIGIBLE = 5 -// === CONST ===
\ No newline at end of file +const INELIGIBLE = 5// === CONST === + +const CODE = [] + +// EVENT 1 +CODE[1 * 2 + 0] = [ + [ vm_log, "NOT IMPLEMENTED" ], + [ vm_return ], +] + +// SHADED 1 +CODE[1 * 2 + 1] = [ + [ vm_log, "NOT IMPLEMENTED" ], + [ vm_return ], +] + +// EVENT 2 +CODE[2 * 2 + 0] = [ + [ vm_log, "NOT IMPLEMENTED" ], + [ vm_return ], +] + +// SHADED 2 +CODE[2 * 2 + 1] = [ + [ vm_log, "NOT IMPLEMENTED" ], + [ vm_return ], +] + +// EVENT 3 +CODE[3 * 2 + 0] = [ + [ vm_log, "NOT IMPLEMENTED" ], + [ vm_return ], +] + +// SHADED 3 +CODE[3 * 2 + 1] = [ + [ vm_log, "NOT IMPLEMENTED" ], + [ vm_return ], +] + +// EVENT 4 +CODE[4 * 2 + 0] = [ + [ vm_log, "NOT IMPLEMENTED" ], + [ vm_return ], +] + +// SHADED 4 +CODE[4 * 2 + 1] = [ + [ vm_log, "NOT IMPLEMENTED" ], + [ vm_return ], +] + +// EVENT 5 +CODE[5 * 2 + 0] = [ + [ vm_log, "NOT IMPLEMENTED" ], + [ vm_return ], +] + +// SHADED 5 +CODE[5 * 2 + 1] = [ + [ vm_log, "NOT IMPLEMENTED" ], + [ vm_return ], +] + +// EVENT 6 +CODE[6 * 2 + 0] = [ + [ vm_log, "NOT IMPLEMENTED" ], + [ vm_return ], +] + +// SHADED 6 +CODE[6 * 2 + 1] = [ + [ vm_log, "NOT IMPLEMENTED" ], + [ vm_return ], +] + +// EVENT 7 +CODE[7 * 2 + 0] = [ + [ vm_log, "NOT IMPLEMENTED" ], + [ vm_return ], +] + +// SHADED 7 +CODE[7 * 2 + 1] = [ + [ vm_log, "NOT IMPLEMENTED" ], + [ vm_return ], +] + +// EVENT 8 +CODE[8 * 2 + 0] = [ + [ vm_log, "NOT IMPLEMENTED" ], + [ vm_return ], +] + +// SHADED 8 +CODE[8 * 2 + 1] = [ + [ vm_log, "NOT IMPLEMENTED" ], + [ vm_return ], +] + +// EVENT 9 +CODE[9 * 2 + 0] = [ + [ vm_log, "NOT IMPLEMENTED" ], + [ vm_return ], +] + +// SHADED 9 +CODE[9 * 2 + 1] = [ + [ vm_log, "NOT IMPLEMENTED" ], + [ vm_return ], +] + +// EVENT 10 +CODE[10 * 2 + 0] = [ + [ vm_log, "NOT IMPLEMENTED" ], + [ vm_return ], +] + +// SHADED 10 +CODE[10 * 2 + 1] = [ + [ vm_log, "NOT IMPLEMENTED" ], + [ vm_return ], +] + +// EVENT 11 +CODE[11 * 2 + 0] = [ + [ vm_log, "NOT IMPLEMENTED" ], + [ vm_return ], +] + +// SHADED 11 +CODE[11 * 2 + 1] = [ + [ vm_log, "NOT IMPLEMENTED" ], + [ vm_return ], +] + +// EVENT 12 +CODE[12 * 2 + 0] = [ + [ vm_log, "NOT IMPLEMENTED" ], + [ vm_return ], +] + +// SHADED 12 +CODE[12 * 2 + 1] = [ + [ vm_log, "NOT IMPLEMENTED" ], + [ vm_return ], +] + +// EVENT 13 +CODE[13 * 2 + 0] = [ + [ vm_log, "NOT IMPLEMENTED" ], + [ vm_return ], +] + +// SHADED 13 +CODE[13 * 2 + 1] = [ + [ vm_log, "NOT IMPLEMENTED" ], + [ vm_return ], +] + +// EVENT 14 +CODE[14 * 2 + 0] = [ + [ vm_log, "NOT IMPLEMENTED" ], + [ vm_return ], +] + +// SHADED 14 +CODE[14 * 2 + 1] = [ + [ vm_log, "NOT IMPLEMENTED" ], + [ vm_return ], +] + +// EVENT 15 +CODE[15 * 2 + 0] = [ + [ vm_log, "NOT IMPLEMENTED" ], + [ vm_return ], +] + +// SHADED 15 +CODE[15 * 2 + 1] = [ + [ vm_log, "NOT IMPLEMENTED" ], + [ vm_return ], +] + +// EVENT 16 +CODE[16 * 2 + 0] = [ + [ vm_log, "NOT IMPLEMENTED" ], + [ vm_return ], +] + +// SHADED 16 +CODE[16 * 2 + 1] = [ + [ vm_log, "NOT IMPLEMENTED" ], + [ vm_return ], +] + +// EVENT 17 +CODE[17 * 2 + 0] = [ + [ vm_log, "NOT IMPLEMENTED" ], + [ vm_return ], +] + +// SHADED 17 +CODE[17 * 2 + 1] = [ + [ vm_log, "NOT IMPLEMENTED" ], + [ vm_return ], +] + +// EVENT 18 +CODE[18 * 2 + 0] = [ + [ vm_log, "NOT IMPLEMENTED" ], + [ vm_return ], +] + +// SHADED 18 +CODE[18 * 2 + 1] = [ + [ vm_log, "NOT IMPLEMENTED" ], + [ vm_return ], +] + +// EVENT 19 +CODE[19 * 2 + 0] = [ + [ vm_log, "NOT IMPLEMENTED" ], + [ vm_return ], +] + +// SHADED 19 +CODE[19 * 2 + 1] = [ + [ vm_log, "NOT IMPLEMENTED" ], + [ vm_return ], +] + +// EVENT 20 +CODE[20 * 2 + 0] = [ + [ vm_log, "NOT IMPLEMENTED" ], + [ vm_return ], +] + +// SHADED 20 +CODE[20 * 2 + 1] = [ + [ vm_log, "NOT IMPLEMENTED" ], + [ vm_return ], +] + +// EVENT 21 +CODE[21 * 2 + 0] = [ + [ vm_log, "NOT IMPLEMENTED" ], + [ vm_return ], +] + +// SHADED 21 +CODE[21 * 2 + 1] = [ + [ vm_log, "NOT IMPLEMENTED" ], + [ vm_return ], +] + +// EVENT 22 +CODE[22 * 2 + 0] = [ + [ vm_log, "NOT IMPLEMENTED" ], + [ vm_return ], +] + +// SHADED 22 +CODE[22 * 2 + 1] = [ + [ vm_log, "NOT IMPLEMENTED" ], + [ vm_return ], +] + +// EVENT 23 +CODE[23 * 2 + 0] = [ + [ vm_log, "NOT IMPLEMENTED" ], + [ vm_return ], +] + +// SHADED 23 +CODE[23 * 2 + 1] = [ + [ vm_log, "NOT IMPLEMENTED" ], + [ vm_return ], +] + +// EVENT 24 +CODE[24 * 2 + 0] = [ + [ vm_log, "NOT IMPLEMENTED" ], + [ vm_return ], +] + +// SHADED 24 +CODE[24 * 2 + 1] = [ + [ vm_log, "NOT IMPLEMENTED" ], + [ vm_return ], +] + +// EVENT 25 +CODE[25 * 2 + 0] = [ + [ vm_log, "NOT IMPLEMENTED" ], + [ vm_return ], +] + +// SHADED 25 +CODE[25 * 2 + 1] = [ + [ vm_log, "NOT IMPLEMENTED" ], + [ vm_return ], +] + +// EVENT 26 +CODE[26 * 2 + 0] = [ + [ vm_log, "NOT IMPLEMENTED" ], + [ vm_return ], +] + +// EVENT 27 +CODE[27 * 2 + 0] = [ + [ vm_log, "NOT IMPLEMENTED" ], + [ vm_return ], +] + +// SHADED 27 +CODE[27 * 2 + 1] = [ + [ vm_log, "NOT IMPLEMENTED" ], + [ vm_return ], +] + +// EVENT 28 +CODE[28 * 2 + 0] = [ + [ vm_log, "NOT IMPLEMENTED" ], + [ vm_return ], +] + +// SHADED 28 +CODE[28 * 2 + 1] = [ + [ vm_log, "NOT IMPLEMENTED" ], + [ vm_return ], +] + +// EVENT 29 +CODE[29 * 2 + 0] = [ + [ vm_log, "NOT IMPLEMENTED" ], + [ vm_return ], +] + +// SHADED 29 +CODE[29 * 2 + 1] = [ + [ vm_log, "NOT IMPLEMENTED" ], + [ vm_return ], +] + +// EVENT 30 +CODE[30 * 2 + 0] = [ + [ vm_log, "NOT IMPLEMENTED" ], + [ vm_return ], +] + +// SHADED 30 +CODE[30 * 2 + 1] = [ + [ vm_log, "NOT IMPLEMENTED" ], + [ vm_return ], +] + +// EVENT 31 +CODE[31 * 2 + 0] = [ + [ vm_log, "NOT IMPLEMENTED" ], + [ vm_return ], +] + +// SHADED 31 +CODE[31 * 2 + 1] = [ + [ vm_log, "NOT IMPLEMENTED" ], + [ vm_return ], +] + +// EVENT 32 +CODE[32 * 2 + 0] = [ + [ vm_log, "NOT IMPLEMENTED" ], + [ vm_return ], +] + +// SHADED 32 +CODE[32 * 2 + 1] = [ + [ vm_log, "NOT IMPLEMENTED" ], + [ vm_return ], +] + +// EVENT 33 +CODE[33 * 2 + 0] = [ + [ vm_log, "NOT IMPLEMENTED" ], + [ vm_return ], +] + +// SHADED 33 +CODE[33 * 2 + 1] = [ + [ vm_log, "NOT IMPLEMENTED" ], + [ vm_return ], +] + +// EVENT 34 +CODE[34 * 2 + 0] = [ + [ vm_log, "NOT IMPLEMENTED" ], + [ vm_return ], +] + +// SHADED 34 +CODE[34 * 2 + 1] = [ + [ vm_log, "NOT IMPLEMENTED" ], + [ vm_return ], +] + +// EVENT 35 +CODE[35 * 2 + 0] = [ + [ vm_log, "NOT IMPLEMENTED" ], + [ vm_return ], +] + +// SHADED 35 +CODE[35 * 2 + 1] = [ + [ vm_log, "NOT IMPLEMENTED" ], + [ vm_return ], +] + +// EVENT 36 +CODE[36 * 2 + 0] = [ + [ vm_log, "NOT IMPLEMENTED" ], + [ vm_return ], +] + +// SHADED 36 +CODE[36 * 2 + 1] = [ + [ vm_log, "NOT IMPLEMENTED" ], + [ vm_return ], +] |