I think your options are:
1. Recreate the script command in herc, shouldn't be that hard, I believe this info is available, just need to make a script command to get it
2. Save a dynamic global variable using the instance ID as suffix using setd between instance_create and instance_init. Once the instance starts, you can copy the value from the global variable into an instance variable. Something like that:
// create instance
.@instanceId = instance_create(...)
// Make global var
setd(sprintf("$@instance_type_%d", .@instanceId), 1 /* whatever you need to store */);
// Init it
instance_init(...)
// ------
// This is called on instance_init
OnInstanceInit:
.@varName$ = sprintf("$@instance_type_%d", instance_id());
'instanceType = getd(.@varName$);
setd(.@varName$, 0); // Clean up so you don't mess up future id reuses
end;
References:
- OnInstanceInit: https://github.com/HerculesWS/Hercules/blob/stable/doc/script_commands.txt#L1151
- instance_create: https://github.com/HerculesWS/Hercules/blob/stable/doc/script_commands.txt#L9730
- instance_init: https://github.com/HerculesWS/Hercules/blob/stable/doc/script_commands.txt#L9793
Think the closest to have for now is saving the relevant information you want in instance creation.
*instance_create("<instance_name>", <owner_id>{, <owner_type>})
Creates an instance using the name "<instance_name>" for the <owner_id> of
<owner_type> (when not provided, defaults to IOT_PARTY). Most instance_*
commands are used in conjunction with this command and depend on the
ID this command returns.
Valid <owner_type> values:
- IOT_NONE (0) - <owner_id> can be any arbitrary number.
- IOT_CHAR (1) - <owner_id> is account ID.
- IOT_PARTY (2) - <owner_id> is party ID.
- IOT_GUILD (3) - <owner_id> is guild ID.
Example:
// Store the Party ID of the invoking character.
.@party_id = getcharid(CHAR_ID_PARTY);
// Attempt to create an instance using that party ID.
.@id = instance_create("Endless Tower", .@party_id);
if (.@id == -1) { // Invalid type - not used anymore
// ...
} else if (.@id == -2) { // Invalid Party ID
// ...
} else if (.@id == -4) { // Already exists
// ...
} else if (.@id < 0) { // Unspecified error while queuing instance.
// ...
}
The alternative would be to change the way instance is handled in source code, or implement a plugin to fetch instance info similar on how rAthena does and uses on that script. From what I understood, you want to retrieve the instance level mode by supplying the instance owner id?