Versión del 2026-10-02
Correcciones en combate y reglas más claras para Robo Captal
- Cuando un Dokimon sube de nivel después de evolucionar, se consulta la lista de movimientos de su etapa evolutiva actual. Las listas generadas de movimientos no cambian respecto a la versión anterior.
- Robo Captal solo puede usarse contra un Dokimon con el estado Atado en un combate individual contra un Ranger que no forme parte de una misión. La descripción del objeto especifica los requisitos de Atado y combate individual.
- El retroceso y Proteger desaparecen al inicio del turno. El escudo, la evasión o el elemento del rival ya no bloquean las mejoras que un Dokimon se aplica a sí mismo.
- Los cambios de estadísticas en combate tienen un límite de +6 o −6. Los Dokimon de nivel máximo ya no muestran un mensaje de cero EXP, y el mensaje de recompensas incluye ahora los pagos de los combates salvajes.
- Los santuarios de las hadas y el portal posterior a la historia aceptan ahora las etapas evolutivas de cada hada. Los encuentros salvajes ya no interrumpen el sueño inicial de Maiko.
Páginas de la wiki actualizadas: Robo Captal: descripción actualizada · Mecánicas: robo y reglas de combate · Noticias: notas del parche del desarrollador
Cambios internos y diff original
- Los seis scripts que generan las tablas de monstruos, movimientos, objetos, zonas, elementos y movimientos aprendidos de la wiki son idénticos byte a byte a los de la versión anterior. En esas tablas solo cambia la descripción de Robo Captal.
- Los 3.213 fotogramas de sprites exportados no han cambiado. Los archivos en inglés de movimientos, escenas y tutoriales solo presentan cambios de finales de línea.
Diff unificado de las 26 entradas de código descompilado modificadas y de los cambios de significado en los textos en inglés, frente al manifiesto 6323404005526619670. Se omiten los cambios que solo afectan a los finales de línea.
--- old/code/gml_GlobalScript_cutscene_functions.gml
+++ new/code/gml_GlobalScript_cutscene_functions.gml
@@ -1350,7 +1350,7 @@
function INCREMENT_BADGES()
{
- global.badges = argument[0];
+ global.badges = max(global.badges, argument[0]);
}
function HIDE_PLAYER()
--- old/code/gml_GlobalScript_cutscenes.gml
+++ new/code/gml_GlobalScript_cutscenes.gml
@@ -38,6 +38,12 @@
function scene_release_a_dokimon()
{
+ var _mon = string(global.monsters[0][UnknownEnum.Value_29]);
+ if (_mon == "" || _mon == "0")
+ {
+ _mon = string(GET_DEX(0, 0, global.monsters[0][0]));
+ }
+ _mon = localize_text_misc(2006, "scene.txt") + " (" + _mon + " Lv" + string(global.monsters[0][UnknownEnum.Value_1]) + ")";
CUTSCENE_ADD_ACTION(START_SCENE, -1);
CUTSCENE_ADD_ACTION(WAIT, 0.5);
CUTSCENE_ADD_ACTION(PL1_DIR, 3);
@@ -46,7 +52,7 @@
CUTSCENE_ADD_ACTION(ADD_TEXT, 909);
CUTSCENE_ADD_ACTION(WAIT_INPUT);
CUTSCENE_ADD_ACTION(ADD_TEXT_YESNO);
- IF_YES(ADD_TEXT, 2006);
+ IF_YES(ADD_TEXT, _mon);
IF_YES(WAIT_INPUT);
IF_YES(ADD_TEXT_YESNO);
IF_YES(ADD_TEXT, 910);
--- old/code/gml_GlobalScript_monster_manipulation.gml
+++ new/code/gml_GlobalScript_monster_manipulation.gml
@@ -883,7 +883,7 @@
}
else
{
- battle_msg[0] = localize_text_misc(101, "ui.txt") + " " + string(GET_DEX(0, 0)) + localize_text_misc(102, "ui.txt") + " " + string(global.monsters[battler_to_be][0]) + "!";
+ battle_msg[0] = localize_text_misc(101, "ui.txt") + " " + string(GET_DEX(0, 0)) + localize_text_misc(102, "ui.txt") + " " + string(global.monsters[battler_to_be][UnknownEnum.Value_29]) + "!";
}
}
else if (switching_mon == 1)
@@ -896,7 +896,7 @@
}
else
{
- battle_msg[0] = localize_text_misc(101, "ui.txt") + " " + string(GET_DEX(2, 0)) + localize_text_misc(102, "ui.txt") + " " + string(global.monsters[battler_to_be][0]) + "!";
+ battle_msg[0] = localize_text_misc(101, "ui.txt") + " " + string(GET_DEX(2, 0)) + localize_text_misc(102, "ui.txt") + " " + string(global.monsters[battler_to_be][UnknownEnum.Value_29]) + "!";
}
}
menu = UnknownEnum.Value_3;
--- old/code/gml_GlobalScript_saving.gml
+++ new/code/gml_GlobalScript_saving.gml
@@ -34,6 +34,7 @@
ini_write_real("Player", "Borderless", 0);
}
ini_write_real("Player", "VSync", global.vsync);
+ ini_write_real("Player", "Always Run", global.CAPS_LOCKED);
ini_close();
}
@@ -198,9 +199,10 @@
ini_write_string("inv0", "Inv" + string(i), global.inv[i][0]);
ini_write_real("inv1", "Inv" + string(i), global.inv[i][1]);
}
+ ini_section_delete("Cap_Data");
for (var i = 0; i < array_length(global.mondex); i++)
{
- ini_write_real("Cap_Data", i, global.capture_data[i]);
+ ini_write_real("Cap_Data", string(i), global.capture_data[i]);
}
global.monsters_seen = 0;
global.monsters_caught = 0;
@@ -563,7 +565,51 @@
}
for (var i = 0; i < global.monster_count; i++)
{
- global.capture_data[i] = ini_read_real("Cap_Data", i, -1);
+ global.capture_data[i] = ini_read_real("Cap_Data", string(i), -1);
+ }
+ var _cap_main = "save.sav";
+ if (global.save_num != 0)
+ {
+ _cap_main = "save" + string(global.save_num) + ".sav";
+ }
+ for (var _p = 0; _p < 2; _p++)
+ {
+ var _cap_src = (_p == 0) ? _file : _cap_main;
+ if (_p == 1 && (_cap_main == _file || !file_exists(_cap_main)))
+ {
+ break;
+ }
+ var _txt = file_text_open_read(_cap_src);
+ var _in_cap = 0;
+ if (_txt != -1)
+ {
+ while (!file_text_eof(_txt))
+ {
+ var _line = string_trim(string_replace_all(string_replace_all(file_text_readln(_txt), "\r", ""), "\n", ""));
+ if (string_char_at(_line, 1) == "[")
+ {
+ _in_cap = _line == "[Cap_Data]";
+ }
+ else if (_in_cap)
+ {
+ var _eq = string_pos("=", _line);
+ var _key = string_trim(string_copy(_line, 1, _eq - 1));
+ var _val = string_trim(string_replace_all(string_copy(_line, _eq + 1, string_length(_line)), "\"", ""));
+ if (_eq > 1 && string_length(string_digits(_key)) > 0 && string_letters(_key) == "" && string_pos("-", _key) == 0 && string_length(string_digits(_val)) > 0 && string_letters(_val) == "")
+ {
+ var _id = floor(real(_key));
+ if (_id < global.monster_count && real(_val) > global.capture_data[_id])
+ {
+ global.capture_data[_id] = real(_val);
+ }
+ }
+ }
+ }
+ file_text_close(_txt);
+ }
+ }
+ for (var i = 0; i < global.monster_count; i++)
+ {
if (global.capture_data[i] == 2)
{
global.capture_data[i] = 1;
@@ -580,8 +626,19 @@
{
REFILL_MOVES(i);
}
- global.monsters_seen = ini_read_real("Monsters", "Seen", 0);
- global.monsters_caught = ini_read_real("Monsters", "Caught", 0);
+ global.monsters_seen = 0;
+ global.monsters_caught = 0;
+ for (var i = 0; i < array_length(global.capture_data); i++)
+ {
+ if (global.capture_data[i] == 0)
+ {
+ global.monsters_seen++;
+ }
+ if (global.capture_data[i] == 1)
+ {
+ global.monsters_caught++;
+ }
+ }
global.obc_used_codes = [];
if (ini_key_exists("OBC", "LedgerV2"))
{
--- old/code/gml_Object_obj_battle_Draw_0.gml
+++ new/code/gml_Object_obj_battle_Draw_0.gml
@@ -1631,6 +1631,10 @@
var prev_mon = global.monsters[evolving][0] - 1;
txt = string(GET_DEX(0, 0, prev_mon)) + " " + localize_text_misc(125, "ui.txt") + " " + string(GET_DEX(0, 0, global.monsters[evolving][0])) + "!";
timer++;
+ if (press(1004) && timer > 30 && timer < 400)
+ {
+ timer = 400;
+ }
if (timer >= 400)
{
audio_sound_gain(global.BATTLE_BGM, global.MUSIC, 2400);
--- old/code/gml_Object_obj_battle_Draw_75.gml
+++ new/code/gml_Object_obj_battle_Draw_75.gml
@@ -4,9 +4,9 @@
}
if (menu == UnknownEnum.Value_23 && alarm[0] == -1)
{
- alph += 0.025;
+ alph += 0.05;
fill_screen(alph, 0);
- if (alph >= 1.8)
+ if (alph >= 1.2)
{
if (!instance_exists(obj_battle_exit))
{
--- old/code/gml_Object_obj_battle_Step_0.gml
+++ new/code/gml_Object_obj_battle_Step_0.gml
@@ -51,6 +51,17 @@
}
if (menu == UnknownEnum.Value_23)
{
+ if (alarm[0] > 5)
+ {
+ if (press(1004))
+ {
+ alarm[0] = 5;
+ }
+ else if (held(1004) || global.battle_toggle)
+ {
+ alarm[0] -= 3;
+ }
+ }
for (var i = 0; i < 4; i++)
{
new_health[i] = round(new_health[i]);
@@ -362,7 +373,7 @@
}
for (var i = 0; i < 4; i++)
{
- if (condition[i] == UnknownEnum.Value_0)
+ if (condition[i] == UnknownEnum.Value_0 || condition[i] == UnknownEnum.Value_2)
{
condition[i] = -1;
}
@@ -386,6 +397,33 @@
if (!autoplay)
{
game_set_speed(60, gamespeed_fps);
+ }
+ if (global.double_battle && condition[attacking] == UnknownEnum.Value_1)
+ {
+ var _who = battler;
+ var _slot = 0;
+ if (attacking != 0)
+ {
+ _who = battler1;
+ }
+ for (var i = 0; i < 4; i++)
+ {
+ if (global.monsters[_who][UnknownEnum.Value_10 + i] != -1 && global.monsters[_who][UnknownEnum.Value_14 + i] > 0)
+ {
+ _slot = i;
+ break;
+ }
+ }
+ if (attacking == 0)
+ {
+ battle_sel = _slot;
+ }
+ else
+ {
+ battle_sel1 = _slot;
+ }
+ menu = UnknownEnum.Value_1;
+ exit;
}
sel[0] = GET_VERTICAL_INPUTS(sel[0]);
if (press(5000))
@@ -426,13 +464,14 @@
}
break;
case 2:
- if ((global.trainer == 0 || (global.trainer == 1 && !global.double_battle && inv_hasitem(UnknownEnum.Value_28) == 1 && global.eparty[0][UnknownEnum.Value_18] == 8)) && global.BATTLE_BGM != snd_main_theme)
+ var _theft = global.trainer == 1 && !global.double_battle && global.quest_battle == -1 && global.eparty[ebattler][UnknownEnum.Value_18] == 8 && inv_hasitem(UnknownEnum.Value_28) == 1;
+ if ((global.trainer == 0 || _theft) && global.BATTLE_BGM != snd_main_theme)
{
var i = 0;
var o = 0;
while (i < (array_length(global.inv) - 1))
{
- if (global.inv[i][0] > -1 && global.inv[i][0] < 6)
+ if (global.inv[i][0] > -1 && ((global.trainer == 0 && global.inv[i][0] < 6) || (_theft && global.inv[i][0] == UnknownEnum.Value_28)))
{
menu = UnknownEnum.Value_13;
show_captals = 0;
@@ -499,7 +538,7 @@
{
sel_defending_mon = 1 - sel_defending_mon;
}
- if ((press(1004) && sel_defending_mon >= 0) || ebattler1 == -1 || (global.admin && autoplay))
+ if ((press(1004) && sel_defending_mon >= 0) || ebattler1 == -1 || (global.admin && autoplay) || condition[attacking] == UnknownEnum.Value_1)
{
defending[attacking] = 1 + (sel_defending_mon * 2);
if (autoplay && global.admin)
@@ -514,13 +553,16 @@
{
sel_defending_mon_slot[1] = sel_defending_mon;
}
- if (attacking == 0)
- {
- global.monsters[battler][UnknownEnum.Value_14 + battle_sel]--;
- }
- else if (battler1 != -1)
- {
- global.monsters[battler1][UnknownEnum.Value_14 + battle_sel1]--;
+ if (condition[attacking] != UnknownEnum.Value_1)
+ {
+ if (attacking == 0)
+ {
+ global.monsters[battler][UnknownEnum.Value_14 + battle_sel]--;
+ }
+ else if (battler1 != -1)
+ {
+ global.monsters[battler1][UnknownEnum.Value_14 + battle_sel1]--;
+ }
}
if (attacking == 0 && battler1 != -1)
{
@@ -741,7 +783,7 @@
{
autoplay_counter++;
}
- if (press(1004) || autoplay_counter >= autoplay_activate)
+ if (press(1004) || autoplay_counter >= autoplay_activate || (global.double_battle && condition[attacking] == UnknownEnum.Value_1))
{
autoplay_counter = 0;
sfx(snd_select);
@@ -1116,6 +1158,15 @@
}
var MY_NAME = GET_DEX(attacker, 0);
var EN_NAME = GET_DEX(defender, 0);
+ if (global.double_battle && condition[attacker] == UnknownEnum.Value_1)
+ {
+ battle_msg[0] = string(MY_NAME) + " " + localize_text_misc(73, "ui.txt");
+ monster_attack[attacker] = -1;
+ condition[attacker] = -1;
+ menu = UnknownEnum.Value_8;
+ alarm[0] = 180;
+ exit;
+ }
if (condition[attacker] == UnknownEnum.Value_0)
{
battle_msg[0] = string(MY_NAME) + " " + localize_text_misc(12, "ui.txt");
@@ -1184,7 +1235,8 @@
{
var MISS = false;
monster_turn[attacker] += 1;
- if (condition[defender] == UnknownEnum.Value_2)
+ var _self_move = GET_MOVE(attacker, 2) == spr_over_self && GET_MOVE(attacker, 8) == UnknownEnum.Value_2;
+ if (condition[defender] == UnknownEnum.Value_2 && !_self_move)
{
battle_msg[0] = string(EN_NAME) + " " + localize_text_misc(15, "ui.txt");
condition[defender] = -1;
@@ -1194,7 +1246,10 @@
{
randomize();
var _accuracy = CALCULATE_BATTLE_STATS(GET_MOVE(attacker, 6), attacker, UnknownEnum.Value_6);
- _accuracy = _accuracy / CALCULATE_BATTLE_STATS(1, defender, UnknownEnum.Value_5);
+ if (!_self_move)
+ {
+ _accuracy = _accuracy / CALCULATE_BATTLE_STATS(1, defender, UnknownEnum.Value_5);
+ }
_accuracy = clamp(_accuracy, 1, 100);
var _chance = irandom(100) - 1;
var _chance_check = _accuracy;
@@ -1208,7 +1263,7 @@
var EN_TYPE = GET_DEX(defender, 7);
var EN_TYPE2 = GET_DEX(defender, 8);
var TYPE = TYPE_EFF(MV_TYPE, EN_TYPE, EN_TYPE2);
- if (TYPE == 0)
+ if (TYPE == 0 && !_self_move)
{
battle_msg[0] = localize_text_misc(17, "ui.txt");
MISS = true;
@@ -1730,7 +1785,7 @@
battle_stats[defender][4] += GET_MOVE(attacker, 28);
battle_stats[defender][5] += GET_MOVE(attacker, 29);
battle_stats[defender][6] += GET_MOVE(attacker, 30);
- for (i = 0; i < 6; i++)
+ for (i = 0; i < 7; i++)
{
if (abs(battle_stats[attacker][i]) > 6)
{
@@ -1839,7 +1894,7 @@
if (RECOIL)
{
var recoil_damage = GET_MOVE(attacker, 36) / 100;
- recoil_damage = GET_STAT(attacker, 0) * recoil_damage;
+ recoil_damage = round(GET_STAT(attacker, 0) * recoil_damage);
battle_msg[ms] = string(MY_NAME) + " " + localize_text_misc(70, "ui.txt");
if (attacker == 0)
{
@@ -2171,11 +2226,11 @@
var enemy_priority1 = 0;
if (monster_attack[0] != -1)
{
- player_priority1 = global.movedex[monster_attack[0]][UnknownEnum.Value_10];
+ player_priority = global.movedex[monster_attack[0]][UnknownEnum.Value_10];
}
if (monster_attack[1] != -1)
{
- enemy_priority1 = global.movedex[monster_attack[1]][UnknownEnum.Value_10];
+ enemy_priority = global.movedex[monster_attack[1]][UnknownEnum.Value_10];
}
if (battler1 != -1 && monster_attack[2] != -1)
{
@@ -2309,7 +2364,7 @@
}
else
{
- defender = defending[0];
+ defender = defending[attacker];
}
if (defending[0] == -1)
{
@@ -2701,7 +2756,7 @@
var o = 0;
while (i < array_length(global.inv))
{
- if (global.inv[i][0] > -1 && (global.inv[i][0] < 6 || (global.inv[i][0] == UnknownEnum.Value_28 && global.eparty[0][UnknownEnum.Value_18] == 8)))
+ if (global.inv[i][0] > -1 && ((global.trainer == 0 && global.inv[i][0] < 6) || (global.trainer && global.inv[i][0] == UnknownEnum.Value_28)))
{
if (global.inv[i][0] != UnknownEnum.Value_5)
{
@@ -2718,7 +2773,7 @@
}
for (i = 0; i < array_length(global.inv); i++)
{
- if (global.inv[i][0] > -1 && (global.inv[i][0] < 6 || (global.inv[i][0] == UnknownEnum.Value_28 && global.eparty[0][UnknownEnum.Value_18] == 8)))
+ if (global.inv[i][0] > -1 && ((global.trainer == 0 && global.inv[i][0] < 6) || (global.trainer && global.inv[i][0] == UnknownEnum.Value_28)))
{
if (global.inv[i][0] == UnknownEnum.Value_5)
{
@@ -2903,20 +2958,24 @@
else
{
var new_move = 0;
- for (var o = 1; o < array_length(global.movepool[global.monsters[i][0]]); o += 2)
+ for (var o = 1; o < array_length(global.movepool[global.monsters[i][0] + global.monsters[i][UnknownEnum.Value_31]]); o += 2)
{
- if (global.movepool[global.monsters[i][0]][o] == global.monsters[i][UnknownEnum.Value_1])
+ if (global.movepool[global.monsters[i][0] + global.monsters[i][UnknownEnum.Value_31]][o] == global.monsters[i][UnknownEnum.Value_1])
{
new_move++;
break;
}
- if (global.movepool[global.monsters[i][0]][o] > global.monsters[i][UnknownEnum.Value_1])
+ if (global.movepool[global.monsters[i][0] + global.monsters[i][UnknownEnum.Value_31]][o] > global.monsters[i][UnknownEnum.Value_1])
{
break;
}
}
- var my_name = string(global.mondex[global.monsters[i][0]][0]);
- for (var b = 0; b < array_length(battle_msg); b++)
+ var my_name = string(GET_DEX(0, 0, global.monsters[i][0]));
+ if (string(global.monsters[i][UnknownEnum.Value_29]) != "" && string(global.monsters[i][UnknownEnum.Value_29]) != "0")
+ {
+ my_name = string(global.monsters[i][UnknownEnum.Value_29]);
+ }
+ for (var b = 2; b < array_length(battle_msg); b++)
{
if (battle_msg[b] == "")
{
@@ -2960,14 +3019,14 @@
max_experience = power(global.monsters[battler][UnknownEnum.Value_1], 3);
}
var new_move = 0;
- for (var i = 1; i < array_length(global.movepool[global.monsters[battler][0]]); i += 2)
- {
- if (global.movepool[global.monsters[battler][0]][i] == global.monsters[battler][UnknownEnum.Value_1])
+ for (var i = 1; i < array_length(global.movepool[global.monsters[battler][0] + global.monsters[battler][UnknownEnum.Value_31]]); i += 2)
+ {
+ if (global.movepool[global.monsters[battler][0] + global.monsters[battler][UnknownEnum.Value_31]][i] == global.monsters[battler][UnknownEnum.Value_1])
{
new_move++;
break;
}
- if (global.movepool[global.monsters[battler][0]][i] > global.monsters[battler][UnknownEnum.Value_1])
+ if (global.movepool[global.monsters[battler][0] + global.monsters[battler][UnknownEnum.Value_31]][i] > global.monsters[battler][UnknownEnum.Value_1])
{
break;
}
@@ -3001,6 +3060,10 @@
var _exp = experience_to_give;
var MY_NAME = GET_DEX(0, 0);
battle_msg[0] = string(MY_NAME) + " " + localize_text_misc(93, "ui.txt") + " " + string(_exp) + " " + localize_text_misc(94, "ui.txt");
+ if (mon_level >= global.mon_max_level)
+ {
+ battle_msg[0] = "";
+ }
}
global.monsters[battler][UnknownEnum.Value_2] = global.monsters[battler][UnknownEnum.Value_2] + experience_to_give;
experience_to_give = 0;
@@ -3029,14 +3092,14 @@
max_experience = power(global.monsters[battler1][UnknownEnum.Value_1], 3);
}
var new_move = 0;
- for (var i = 1; i < array_length(global.movepool[global.monsters[battler1][0]]); i += 2)
- {
- if (global.movepool[global.monsters[battler1][0]][i] == global.monsters[battler1][UnknownEnum.Value_1])
+ for (var i = 1; i < array_length(global.movepool[global.monsters[battler1][0] + global.monsters[battler1][UnknownEnum.Value_31]]); i += 2)
+ {
+ if (global.movepool[global.monsters[battler1][0] + global.monsters[battler1][UnknownEnum.Value_31]][i] == global.monsters[battler1][UnknownEnum.Value_1])
{
new_move++;
break;
}
- if (global.movepool[global.monsters[battler1][0]][i] > global.monsters[battler1][UnknownEnum.Value_1])
+ if (global.movepool[global.monsters[battler1][0] + global.monsters[battler1][UnknownEnum.Value_31]][i] > global.monsters[battler1][UnknownEnum.Value_1])
{
break;
}
@@ -3070,6 +3133,10 @@
_exp = experience_to_give2;
MY_NAME = GET_DEX(2, 0);
battle_msg[1] = string(MY_NAME) + " " + localize_text_misc(93, "ui.txt") + " " + string(_exp) + " " + localize_text_misc(94, "ui.txt");
+ if (mon_level1 >= global.mon_max_level)
+ {
+ battle_msg[1] = "";
+ }
}
var _exp = experience_to_give2;
var MY_NAME = GET_DEX(2, 0);
@@ -3089,6 +3156,10 @@
}
menu = UnknownEnum.Value_15;
alarm[0] = 180;
+ if (battle_msg[0] == "")
+ {
+ alarm[0] = 1;
+ }
shiftover = 0;
if (global.eparty[ebattler][UnknownEnum.Value_3] <= 0 && ebattler1 != -1)
{
@@ -3099,6 +3170,16 @@
case UnknownEnum.Value_15:
if (alarm[0] == -1)
{
+ for (var i = 1; i < array_length(battle_msg); i++)
+ {
+ if (battle_msg[i] != "")
+ {
+ battle_msg[0] = battle_msg[i];
+ battle_msg[i] = "";
+ alarm[0] = 180;
+ exit;
+ }
+ }
if (battle_msg[1] == "")
{
if (global.monsters[battler][UnknownEnum.Value_3] < 1)
@@ -3306,10 +3387,10 @@
{
if (trainer_offset < 144)
{
- trainer_offset += 3;
- }
- }
- if (press(1004) && (trainer_offset >= 144 || !global.trainer))
+ trainer_offset += (3 + (6 * (held(1004) || global.battle_toggle)));
+ }
+ }
+ if ((press(1004) && trainer_offset >= 144) || !global.trainer)
{
var reward_money = 0;
if (!global.trainer)
@@ -3335,26 +3416,23 @@
global.moni = round(global.moni / 5) * 5;
reward_money = round(reward_money);
global.moni = round(global.moni);
- if (floor(global.monsters[battler][UnknownEnum.Value_3]) > 0)
- {
- if (global.trainer)
- {
- battle_msg[0] = localize_text_misc(97, "ui.txt") + " " + string(reward_money) + " " + localize_text_misc(98, "ui.txt");
- if (global.trainers[global.trainer_battling] >= 0)
- {
- global.trainers[global.trainer_battling]++;
- }
- if (global.quest_battle != -1)
- {
- global.quest[global.quest_battle] += 1;
- }
- if (global.elite_ranger_battle)
- {
- global.badges++;
- }
- }
- alarm[0] = 40;
- }
+ battle_msg[0] = localize_text_misc(97, "ui.txt") + " " + string(reward_money) + " " + localize_text_misc(98, "ui.txt");
+ if (global.trainer)
+ {
+ if (global.trainers[global.trainer_battling] >= 0)
+ {
+ global.trainers[global.trainer_battling]++;
+ }
+ if (global.quest_battle != -1)
+ {
+ global.quest[global.quest_battle] += 1;
+ }
+ if (global.elite_ranger_battle)
+ {
+ global.badges++;
+ }
+ }
+ alarm[0] = 60;
menu = UnknownEnum.Value_23;
}
break;
@@ -3434,6 +3512,10 @@
battle_msg[0] = "";
}
break;
+}
+if (press(1004) && alarm[0] > 5 && exists_in_list(menu, UnknownEnum.Value_14, UnknownEnum.Value_15))
+{
+ alarm[0] = 5;
}
if (alarm[0] > 0 && menu != UnknownEnum.Value_3 && menu != UnknownEnum.Value_2)
{
@@ -3499,5 +3581,7 @@
Value_23,
Value_24,
Value_28 = 28,
- Value_32 = 32
+ Value_29,
+ Value_31 = 31,
+ Value_32
}
--- old/code/gml_Object_obj_camera_Create_0.gml
+++ new/code/gml_Object_obj_camera_Create_0.gml
@@ -7,6 +7,8 @@
mon_anim_t = 0;
worldmap_curs_x = 0;
worldmap_curs_y = 0;
+fly_mouse_x = -1;
+fly_mouse_y = -1;
mon_hop = 1;
alarm_set(3, 30);
alarm_set(0, 1);
--- old/code/gml_Object_obj_camera_Draw_0.gml
+++ new/code/gml_Object_obj_camera_Draw_0.gml
@@ -323,7 +323,10 @@
{
font(fn_quan);
}
- text(cx + 128, cy + 128, localize_text_misc(200, "ui.txt"));
+ if (fly_to == -1)
+ {
+ text(cx + 128, cy + 128, localize_text_misc(200, "ui.txt"));
+ }
alpha();
if (global.admin)
{
@@ -371,6 +374,16 @@
if (held(1002) && worldmap_curs_x < 256)
{
worldmap_curs_x += mvspd;
+ }
+ if (fly_to != -1)
+ {
+ if (fly_mouse_x != -1 && (mouse_x != fly_mouse_x || mouse_y != fly_mouse_y))
+ {
+ worldmap_curs_x = clamp(mouse_x - cx, 0, 256);
+ worldmap_curs_y = clamp(mouse_y - cy, 0, 144);
+ }
+ fly_mouse_x = mouse_x;
+ fly_mouse_y = mouse_y;
}
looking_area = -1;
i = 0;
@@ -754,10 +767,15 @@
wx = cx + ((global.world_x / room_width) * 256);
wy = cy + ((global.world_y / room_height) * 144) + 16;
}
+ if (worldmap_curs_x == 0 && worldmap_curs_y == 0 && wx >= cx && wy >= cy)
+ {
+ worldmap_curs_x = clamp((wx - cx) + 4, 1, 256);
+ worldmap_curs_y = clamp((wy - cy) + 4, 1, 144);
+ }
draw_sprite_part(spr_players_index, 0, 20, global.playable_character * 22, 20, 22, wx - 6, wy - 12);
if (fly_to != -1 && looking_area != -1)
{
- if (press(1004) && worldmap_curs_x != 0 && worldmap_curs_y != 0)
+ if ((press(1004) || mouse()) && worldmap_curs_x != 0 && worldmap_curs_y != 0)
{
var _dest = flight_landing_lookup(looking_area);
if (_dest[0] != -1)
--- old/code/gml_Object_obj_fairy_checker_Create_0.gml
+++ new/code/gml_Object_obj_fairy_checker_Create_0.gml
@@ -1,13 +1,18 @@
image_speed = 0;
-if (global.capture_data[target_monster] == 1)
+for (var i = target_monster; i < array_length(global.mondex); i++)
{
- image_index++;
+ if (global.capture_data[i] == 1)
+ {
+ image_index++;
+ break;
+ }
+ if (global.mondex[i][UnknownEnum.Value_13] <= 1)
+ {
+ break;
+ }
}
-else if (global.capture_data[target_monster + 1] == 1)
+
+enum UnknownEnum
{
- image_index++;
+ Value_13 = 13
}
-else if (global.capture_data[target_monster + 2] == 1)
-{
- image_index++;
-}
--- old/code/gml_Object_obj_globals_Create_0.gml
+++ new/code/gml_Object_obj_globals_Create_0.gml
@@ -215,6 +215,7 @@
{
global.vsync = ini_read_real("Player", "VSync", global.vsync);
}
+ global.CAPS_LOCKED = ini_read_real("Player", "Always Run", global.CAPS_LOCKED);
alarm_set(2, 2);
ini_close();
audio_master_gain(global.VOLUME);
--- old/code/gml_Object_obj_globals_Step_0.gml
+++ new/code/gml_Object_obj_globals_Step_0.gml
@@ -78,6 +78,7 @@
if (press(20))
{
global.CAPS_LOCKED = 1 - global.CAPS_LOCKED;
+ SAVE_SETTINGS();
}
if (press(80) && (global.admin || held(162)))
{
--- old/code/gml_Object_obj_language_Draw_0.gml
+++ new/code/gml_Object_obj_language_Draw_0.gml
@@ -201,6 +201,10 @@
{
trigger = 1;
global.language = sel;
+ if (global.language == 1 && !global.MOBILE)
+ {
+ global.hd_font = 1;
+ }
sfx(snd_select);
global.running_lang = 0;
if (global.language == 2 || global.language == 4 || global.language == 3)
--- old/code/gml_Object_obj_open_flight_Step_0.gml
+++ new/code/gml_Object_obj_open_flight_Step_0.gml
@@ -14,6 +14,7 @@
looking_area = -1;
worldmap_curs_x = 0;
worldmap_curs_y = 0;
+ fly_mouse_x = -1;
}
clear(1004);
}
--- old/code/gml_Object_obj_opening_scene_Draw_0.gml
+++ new/code/gml_Object_obj_opening_scene_Draw_0.gml
@@ -1,4 +1,4 @@
-if (press(32) || press(27) || mouse())
+if (press(32) || press(27) || press(1004) || mouse())
{
room_goto(rm_title);
exit;
--- old/code/gml_Object_obj_player_Create_0.gml
+++ new/code/gml_Object_obj_player_Create_0.gml
@@ -67,6 +67,10 @@
global.badges = 8;
}
}
+}
+if (global.quest[0] == 34 && global.badges < 8 && global.trainers[120] == 0)
+{
+ global.quest[0] = 33;
}
if (global.quest[0] == 31 && global.trainers[76] > 0)
{
--- old/code/gml_Object_obj_player_Step_0.gml
+++ new/code/gml_Object_obj_player_Step_0.gml
@@ -117,6 +117,7 @@
if (press(1005))
{
global.CAPS_LOCKED = 1 - global.CAPS_LOCKED;
+ SAVE_SETTINGS();
}
}
if (object_index != asset_get_index("obj_maiko") && (keyboard_check(vk_shift) || held(1005) || gamepad_button_check(0, gp_stickl) || global.CAPS_LOCKED))
@@ -189,7 +190,7 @@
{
moving = 0;
instance_activate_region(x - 256, y - 144, 512, 288, 1);
- if (layer_exists("Grass") && !global.hovercraft)
+ if (layer_exists("Grass") && !global.hovercraft && object_index != asset_get_index("obj_maiko"))
{
if (tile_meeting(x, y, "Grass") && !place_meeting(x, y, obj_cutscene_trigger))
{
--- old/code/gml_Object_obj_title_Draw_0.gml
+++ new/code/gml_Object_obj_title_Draw_0.gml
@@ -1,4 +1,4 @@
-if (keyboard_check_pressed(vk_escape) || press(1005))
+if (keyboard_check_pressed(vk_escape) || (global.MOBILE && press(1005)))
{
game_end();
}
--- old/code/gml_Object_par_door_Step_0.gml
+++ new/code/gml_Object_par_door_Step_0.gml
@@ -1,3 +1,7 @@
+if (instance_exists(obj_battle_transition))
+{
+ exit;
+}
if (place_meeting(x, y, obj_player) && !global.hovercraft)
{
if (obj_player.moving != 0)
--- old/code/gml_RoomCC_rm_worldmap_645_Create.gml
+++ new/code/gml_RoomCC_rm_worldmap_645_Create.gml
@@ -6,3 +6,7 @@
{
destroy();
}
+if (global.badges < 8)
+{
+ destroy();
+}
--- old/code/gml_RoomCC_rm_worldmap_702_Create.gml
+++ new/code/gml_RoomCC_rm_worldmap_702_Create.gml
@@ -15,7 +15,7 @@
{
mon_check++;
}
-if (global.capture_data[UnknownEnum.Value_115] == 1 || global.capture_data[UnknownEnum.Value_116] == 1 || global.capture_data[UnknownEnum.Value_117] == 1)
+if (global.capture_data[UnknownEnum.Value_115] == 1 || global.capture_data[UnknownEnum.Value_116] == 1 || global.capture_data[UnknownEnum.Value_117] == 1 || global.capture_data[UnknownEnum.Value_118] == 1 || global.capture_data[UnknownEnum.Value_119] == 1)
{
mon_check++;
}
@@ -29,7 +29,9 @@
Value_115 = 115,
Value_116,
Value_117,
- Value_120 = 120,
+ Value_118,
+ Value_119,
+ Value_120,
Value_121,
Value_122,
Value_123,
--- old/code/gml_RoomCC_rm_worldmap_707_PreCreate.gml
+++ new/code/gml_RoomCC_rm_worldmap_707_PreCreate.gml
@@ -1 +1 @@
-self.target_monster = 117;
+self.target_monster = 115;
--- old/code/gml_RoomCC_rm_worldmap_708_PreCreate.gml
+++ new/code/gml_RoomCC_rm_worldmap_708_PreCreate.gml
@@ -1 +1 @@
-self.target_monster = 122;
+self.target_monster = 120;
--- old/code/gml_RoomCC_rm_worldmap_709_PreCreate.gml
+++ new/code/gml_RoomCC_rm_worldmap_709_PreCreate.gml
@@ -1 +1 @@
-self.target_monster = 125;
+self.target_monster = 123;
--- old/code/gml_RoomCC_rm_worldmap_710_PreCreate.gml
+++ new/code/gml_RoomCC_rm_worldmap_710_PreCreate.gml
@@ -1 +1 @@
-self.target_monster = 128;
+self.target_monster = 126;
--- old/code/gml_RoomCC_rm_worldmap_711_Create.gml
+++ new/code/gml_RoomCC_rm_worldmap_711_Create.gml
@@ -15,7 +15,7 @@
{
mon_check++;
}
-if (global.capture_data[UnknownEnum.Value_115] == 1 || global.capture_data[UnknownEnum.Value_116] == 1 || global.capture_data[UnknownEnum.Value_117] == 1)
+if (global.capture_data[UnknownEnum.Value_115] == 1 || global.capture_data[UnknownEnum.Value_116] == 1 || global.capture_data[UnknownEnum.Value_117] == 1 || global.capture_data[UnknownEnum.Value_118] == 1 || global.capture_data[UnknownEnum.Value_119] == 1)
{
mon_check++;
}
@@ -29,7 +29,9 @@
Value_115 = 115,
Value_116,
Value_117,
- Value_120 = 120,
+ Value_118,
+ Value_119,
+ Value_120,
Value_121,
Value_122,
Value_123,
--- old/Localization/english_items.txt
+++ new/Localization/english_items.txt
@@ -83,7 +83,7 @@
55 She suddenly cracked out of the Ember Soul. She's following you around!
56 Theft Captal
-57 Lets you steal monsters from other Rangers. The battle ends on use.
+57 Steals a Bound monster from a Ranger, in single battles only. The battle ends on use.
58 Orb Shards
59 Apparently you can level up your monsters with this? Neat!
--- old/Localization/english_ui.txt
+++ new/Localization/english_ui.txt
@@ -287,8 +287,8 @@
346 Change the difficulty of battles. Default: Normal
347 Monsters will faint and can be revived. Default: Faint
348 Monsters permanently disappear upon reaching 0 HP. Default: Faint
-349 There is no monsters capture limit
-350 You can only capture and use up to 6 monsters
+349 You can capture and use as many monsters as you need
+350 WARNING: You will only be able capture 6 monsters total (hyper difficulty)
351 Dokimon
352 Disable Partner Death
