Adds battle config mob_respawn_time (#7312)
* Adjusts the minimum respawn time of a monster to be 1 second as it is officially. * Adds a battle config to allow for easy adjustment. * Monsters that don't define a delay1 for permanent spawn scripts are defaulted to 5 seconds. Thanks to @mrjnumber1, @vstumpf, @Lemongrass3110, and @Atemo! Co-authored-by: Lemongrass3110 <lemongrass@kstp.at>
This commit is contained in:
@@ -5118,7 +5118,7 @@ void npc_parse_mob2(struct spawn_data* mob)
|
||||
|
||||
static const char* npc_parse_mob(char* w1, char* w2, char* w3, char* w4, const char* start, const char* buffer, const char* filepath)
|
||||
{
|
||||
int num, mob_id, mob_lv = -1, size = -1, w1count;
|
||||
int num, mob_id, mob_lv = -1, delay = 5000, size = -1, w1count, w4count;
|
||||
short m, x = 0, y = 0, xs = -1, ys = -1;
|
||||
char mapname[MAP_NAME_LENGTH_EXT], mobname[NAME_LENGTH], sprite[NAME_LENGTH];
|
||||
struct spawn_data mob, *data;
|
||||
@@ -5133,7 +5133,7 @@ static const char* npc_parse_mob(char* w1, char* w2, char* w3, char* w4, const c
|
||||
// w4=<mob id>,<amount>{,<delay1>{,<delay2>{,<event>{,<mob size>{,<mob ai>}}}}}
|
||||
if( ( w1count = sscanf(w1, "%15[^,],%6hd,%6hd,%6hd,%6hd", mapname, &x, &y, &xs, &ys) ) < 1
|
||||
|| sscanf(w3, "%23[^,],%11d", mobname, &mob_lv) < 1
|
||||
|| sscanf(w4, "%23[^,],%11d,%11u,%11u,%77[^,],%11d,%11d[^\t\r\n]", sprite, &num, &mob.delay1, &mob.delay2, mob.eventname, &size, &ai) < 2 )
|
||||
|| ( w4count = sscanf(w4, "%23[^,],%11d,%11u,%11u,%77[^,],%11d,%11d[^\t\r\n]", sprite, &num, &delay, &mob.delay2, mob.eventname, &size, &ai) ) < 2 )
|
||||
{
|
||||
ShowError("npc_parse_mob: Invalid mob definition in file '%s', line '%d'.\n * w1=%s\n * w2=%s\n * w3=%s\n * w4=%s\n", filepath, strline(buffer,start-buffer), w1, w2, w3, w4);
|
||||
return strchr(start,'\n');// skip and continue
|
||||
@@ -5181,6 +5181,12 @@ static const char* npc_parse_mob(char* w1, char* w2, char* w3, char* w4, const c
|
||||
return strchr(start,'\n');// skip and continue
|
||||
}
|
||||
|
||||
if (w4count > 2 && delay != 5000 && delay < battle_config.mob_respawn_time) {
|
||||
ShowWarning("npc_parse_mob: Invalid delay %u for mob ID %d (file '%s', line '%d'), defaulting to 5 seconds.\n", delay, mob_id, filepath, strline(buffer, start - buffer));
|
||||
mob.delay1 = 5000;
|
||||
} else
|
||||
mob.delay1 = delay;
|
||||
|
||||
if( mob.state.size > SZ_BIG && size != -1 )
|
||||
{
|
||||
ShowError("npc_parse_mob: Invalid size number %d for mob ID %d (file '%s', line '%d').\n", mob.state.size, mob_id, filepath, strline(buffer, start - buffer));
|
||||
|
||||
Reference in New Issue
Block a user