Another question, i tried to change the size of monster move bar gui at the battle but i cant find it how. Same happen with chosen gui at the shrine. Can you guide me how?
The move list in battle is set up by mev_battle_attack.
I don't understand what you mean with "chosen GUI at the shrine" but the terminal menu is set up by msh_terminal_load_page.
Both of these have comments for what each block of code does (e.g. "Frame with type/MP info") so hopefully it should be easy to figure out how to change the parts you want to change.
Are you spawning the virtual keys offscreen perhaps? All of the menus draw themselves in the Draw GUI event (GUI layer) to avoid having to think about that, be careful not to use the x / y position of menu objects (which is not used) but instead check the coordinates of the GGUI frames / GGUI elements, which are in GUI coordinates.
(Also, are you using the Game Maker virtual keys system or making your own?)
Not really, adding more features also makes it more complicated to use. (Though if you check the comments I have suggested implementations for a lot of commonly requested features)
Hey Yal can you help me with making abilities so far i have initialized them the same way you have monsters and items, but i cannot seem to understand how those work also i am having trouble drawing them in the status menu, how do i do that.
So far i have done this :
function init_ability(argument0, argument1, argument2, argument3, argument4, argument5, argument6 ,argument7) {
I think the easiest way to figure out how to implement abilities would be running a search (Ctrl+Shift+F) for itemvalidflag_AUTO_, this should bring up all the places where items are automatically triggered (e.g. the Spiked Shell being triggered on damage to deal a counter attack... you'd want a similar check for abilities being triggered on damage at basically the same place, for things like Flash Fire, Sturdy and so on; other abilities might trigger on each turn, or when attacking, etc)
You'll also need to actually give abilities to monsters (so init_monster needs to take a new argument for ability, the global.monster_data array be extended so it can fit this new data in, and the giant setup in init_monsters should provide it of course)
To show the ability, mev_pause_monsters_status is the script that builds the status screen. You'd read out the abl_NAME field here and create a ggui_element_text to display it somewhere.
1) Savefiles are found in AppData/Local/<name you saved the GM project under>, monster_save0 is the first file, monster_save1 the second and so on. It's a hidden folder so the easiest way to find it is to type in %LOCALAPPDATA% in the file explorer path and hit enter.
2) The important part is setting global.player_side_monsters and global.enemy_side_monsters to 2 (that's what controls how many monsters each side is allowed to have at once). The easiest way to inject this would be to copy obj_npc_trainer and cc_battlestart_trainer to new obj_npc_doublebattletrainer/cc_battlestart_doublebattletrainer which are mostly identical but sets these to 2 instead of 1 before the fight starts. (Also note that cc_battlestart_trainer actually can take an array of trainer data, global.encounter_trainer_data has one entry per trainer, so if you want a double battle against specifically two different trainers (instead of an entity like 'twins') you could populate this twice with different monster, dialogue etc data for each trainer.
3) Use an obj_encounterzoneselector, place one in the room and stretch it out over the area you want the battles in and then select the ects_* script with that room's settings (there's two more ects_* scripts with the first town / Driftwood Forest encounter data). They're tied to these markers so you can make things more granular (e.g. have different encounters in different terrain)
Hey yal, i have some trouble when adding another gym leader. Can you help me step by step, i cant figured how to handle badges after winning the battle
Badge status is handled by the array global.player_badges. The first badge is badge 0, the second badge 1 and so on.
You can check cis_leader1 and cis_leader1_beat for an example how this is done:
in cis_leader1 there's different dialogue depending on if you have the badge or not (and you only trigger the battle if you don't have the badge). Also it sets up the post-battle script (global.after_battle_event) which is what triggers the cutscene after the battle.
in cis_leader1_beat (the script set up to run when you win the battle) you actually get the badge thanks to the line that reads csc_enqueue(cc_obtainbadge,0) so for a second badge, you'd instead obtain badge 1 in the same way.
I have been working to get evolution items into the game. I have them working, for the most part. You can select it from the items menu, and then use it on a monster, who will evolve if they have an item based evolution that matches the used item. However, once the evolution ends and the room fades out, the game crashes and I'm not quite sure how to fix it. Here is the crash message:
############################################################################################
ERROR in action number 1
of Step Event0 for object obj_roomchangefade:
room_goto argument 1 invalid reference to (room) - requested -12341 max is 8
at gml_Object_obj_roomchangefade_Step_0 (line 7) - room_goto(my_room)
############################################################################################
gml_Object_obj_roomchangefade_Step_0 (line 7)
Here is the code of the evolution item:
///itemuse_evolution(amp_id,EvoItem)
function itemuse_evolution(argument0, argument1) {
var monamp = argument0;
var monid = global.active_monster_party[argument0,amp_MONID];
var nevo = NONE;
for(c = 0; c < global.monster_data[monid,mond_TOTALEVOLUTIONS]; c++)
{
if(global.monster_evolution_type[monid,c] == evotype_ITEM)
{
show_debug_message("Evolution type equals item")
if(global.monster_evolution_arg[ monid,c] == argument1)
{
nevo = global.monster_evolution_mon[ monid,c]
inventory_lose_item(my_item,1)
ds_queue_enqueue(global.pending_evolutions_queue,[monamp,nevo])
room_goto_fade_dontdestroy(rm_evolution,60)
break;
}
}
}
if (nevo == NONE)
{
msh_itemuse_show_party_effects("It wouldn't have any effect.")
}
}
I feel like I must be missing something about the room_goto_fade_dontdestroy function, but I don't know what. Any help would be appreciated. If you need any more details, let me know.
-12341 is the value of the NONE constant (one of the reasons I picked that number was to make it instantly recognizable). You need to set global.load_room to the current room before changing to the evolution room (and also the global.load_x, load_y and load_direction variables to the player's current x / y / drawdir respectively) otherwise it doesn't know where to put you back - and that's exactly what's happening right now.
(For an example of how to do this, check out player_step_fill which handles the "steps in tall grass to the next random battle" counter, and which sets these before changing to the battle room if an encounter is triggered - side note, this function would also be where you put things like "monsters in daycare gets EXP" and "countdown to eggs hatching" happening)
← Return to asset pack
Comments
Log in with itch.io to leave a comment.
Another question, i tried to change the size of monster move bar gui at the battle but i cant find it how. Same happen with chosen gui at the shrine. Can you guide me how?
The move list in battle is set up by mev_battle_attack.
I don't understand what you mean with "chosen GUI at the shrine" but the terminal menu is set up by msh_terminal_load_page.
Both of these have comments for what each block of code does (e.g. "Frame with type/MP info") so hopefully it should be easy to figure out how to change the parts you want to change.
Hei. Me again, what is the best way to add virtual key at this engine. I try but sometime they vanish at some place
Are you spawning the virtual keys offscreen perhaps? All of the menus draw themselves in the Draw GUI event (GUI layer) to avoid having to think about that, be careful not to use the x / y position of menu objects (which is not used) but instead check the coordinates of the GGUI frames / GGUI elements, which are in GUI coordinates.
(Also, are you using the Game Maker virtual keys system or making your own?)
Any plans to update any further? Like add more features and such?
Not really, adding more features also makes it more complicated to use. (Though if you check the comments I have suggested implementations for a lot of commonly requested features)
Hey Yal can you help me with making abilities so far i have initialized them the same way you have monsters and items, but i cannot seem to understand how those work also i am having trouble drawing them in the status menu, how do i do that.
So far i have done this :
function init_ability(argument0, argument1, argument2, argument3, argument4, argument5, argument6 ,argument7) {
global.ability_data[argument0,abl_NAME ] = argument1
global.ability_data[argument0,abl_TRIGGER ] = argument2
global.ability_data[argument0,abl_TARGET1 ] = argument3[0]
global.ability_data[argument0,abl_CHANCE1 ] = argument3[1]
global.ability_data[argument0,abl_TYPE1 ] = argument3[2]
global.ability_data[argument0,abl_EFFECT1 ] = argument3[3]
global.ability_data[argument0,abl_SEVERITY1 ] = argument3[4]
global.ability_data[argument0,abl_TARGET2 ] = argument4[0]
global.ability_data[argument0,abl_CHANCE2 ] = argument4[1]
global.ability_data[argument0,abl_TYPE2 ] = argument4[2]
global.ability_data[argument0,abl_EFFECT2 ] = argument4[3]
global.ability_data[argument0,abl_SEVERITY2 ] = argument4[4]
global.ability_data[argument0,abl_WEAKNESS1 ] = argument5[0]
global.ability_data[argument0,abl_WEAKNESS2 ] = argument5[1]
global.ability_data[argument0,abl_WEAKNESS3 ] = argument5[2]
global.ability_data[argument0,abl_IMMUNITIES1 ] = argument6[0]
global.ability_data[argument0,abl_IMMUNITIES2 ] = argument6[1]
global.ability_data[argument0,abl_IMMUNITIES3 ] = argument6[2]
global.ability_data[argument0,abl_STRENGTHEN1 ] = argument7[0]
global.ability_data[argument0,abl_STRENGTHEN2 ] = argument7[1]
global.ability_data[argument0,abl_STRENGTHEN3 ] = argument7[2]
}
/// init_abilities()
function init_abilities() {
init_ability(abl_FLAMECLOAK, "Flame Cloak", EMERGE,
[movetarg_USER, 100, type_FIRE, ailment_BURN, 1],
[NONE,NONE,NONE,NONE,NONE],
[NONE,NONE,NONE],
[NONE,NONE,NONE],
[NONE,NONE,NONE]
);
}
#region//ability region
#macro abl_NAME 1
#macro abl_TRIGGER 2
#macro abl_TARGET1 3
#macro abl_CHANCE1 4
#macro abl_TYPE1 5
#macro abl_EFFECT1 6
#macro abl_SEVERITY1 7
#macro abl_TARGET2 8
#macro abl_CHANCE2 9
#macro abl_TYPE2 10
#macro abl_EFFECT2 11
#macro abl_SEVERITY2 12
#macro abl_WEAKNESS1 13
#macro abl_WEAKNESS2 14
#macro abl_WEAKNESS3 15
#macro abl_IMMUNITIES1 16
#macro abl_IMMUNITIES2 17
#macro abl_IMMUNITIES3 18
#macro abl_STRENGTHEN1 19
#macro abl_STRENGTHEN2 20
#macro abl_STRENGTHEN3 21
#endregion
I think the easiest way to figure out how to implement abilities would be running a search (Ctrl+Shift+F) for itemvalidflag_AUTO_, this should bring up all the places where items are automatically triggered (e.g. the Spiked Shell being triggered on damage to deal a counter attack... you'd want a similar check for abilities being triggered on damage at basically the same place, for things like Flash Fire, Sturdy and so on; other abilities might trigger on each turn, or when attacking, etc)
You'll also need to actually give abilities to monsters (so init_monster needs to take a new argument for ability, the global.monster_data array be extended so it can fit this new data in, and the giant setup in init_monsters should provide it of course)
To show the ability, mev_pause_monsters_status is the script that builds the status screen. You'd read out the abl_NAME field here and create a ggui_element_text to display it somewhere.
Hey Yal, can you help me with a few things :
1.How can I delete save files
2.How do i enable double battles for certain trainers
3.How do i set encounters for the room, i found ects_placeholder() but I could not find out how it applied and how to make more
thank you
1) Savefiles are found in AppData/Local/<name you saved the GM project under>, monster_save0 is the first file, monster_save1 the second and so on. It's a hidden folder so the easiest way to find it is to type in %LOCALAPPDATA% in the file explorer path and hit enter.
2) The important part is setting global.player_side_monsters and global.enemy_side_monsters to 2 (that's what controls how many monsters each side is allowed to have at once). The easiest way to inject this would be to copy obj_npc_trainer and cc_battlestart_trainer to new obj_npc_doublebattletrainer/cc_battlestart_doublebattletrainer which are mostly identical but sets these to 2 instead of 1 before the fight starts. (Also note that cc_battlestart_trainer actually can take an array of trainer data, global.encounter_trainer_data has one entry per trainer, so if you want a double battle against specifically two different trainers (instead of an entity like 'twins') you could populate this twice with different monster, dialogue etc data for each trainer.
3) Use an obj_encounterzoneselector, place one in the room and stretch it out over the area you want the battles in and then select the ects_* script with that room's settings (there's two more ects_* scripts with the first town / Driftwood Forest encounter data). They're tied to these markers so you can make things more granular (e.g. have different encounters in different terrain)
Hey yal, i have some trouble when adding another gym leader. Can you help me step by step, i cant figured how to handle badges after winning the battle
Badge status is handled by the array global.player_badges. The first badge is badge 0, the second badge 1 and so on.
You can check cis_leader1 and cis_leader1_beat for an example how this is done:
csc_enqueue(cc_obtainbadge,0)
so for a second badge, you'd instead obtain badge 1 in the same way.
Hey,
I have been working to get evolution items into the game. I have them working, for the most part. You can select it from the items menu, and then use it on a monster, who will evolve if they have an item based evolution that matches the used item. However, once the evolution ends and the room fades out, the game crashes and I'm not quite sure how to fix it. Here is the crash message:
Here is the code of the evolution item:
I feel like I must be missing something about the room_goto_fade_dontdestroy function, but I don't know what. Any help would be appreciated. If you need any more details, let me know.
-12341 is the value of the NONE constant (one of the reasons I picked that number was to make it instantly recognizable). You need to set global.load_room to the current room before changing to the evolution room (and also the global.load_x, load_y and load_direction variables to the player's current x / y / drawdir respectively) otherwise it doesn't know where to put you back - and that's exactly what's happening right now.
(For an example of how to do this, check out player_step_fill which handles the "steps in tall grass to the next random battle" counter, and which sets these before changing to the battle room if an encounter is triggered - side note, this function would also be where you put things like "monsters in daycare gets EXP" and "countdown to eggs hatching" happening)