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)
← Return to asset pack
Comments
Log in with itch.io to leave a comment.
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)