Expanded the instance system to support new modes
* New modes include: No player attached, single player, and guild.
* Modified the instance_db to allow instance idle time to be adjustable.
* Removed Map1 from the instance_db as the EnterMap is always the same value.
* Adjusted the stored maps of instances to dynamic arrays to conserve memory.
- Max amount of possible maps increased to 255.
* Instances will now be destroyed even if the owner cannot be found.
* Corrected the return value when entering an instance when a character, party, or guild does not have an instance.
* Expanded script command instance_create to take in an owner ID and an optional mode.
* Added a new script command instance_check_guild (works the same as instance_check_party).
* Corrected a few script commands to properly stop the script engine on failures for instance script commands.
* Removed the instance name lookup for when entering an instance as instance_id is now passed.
- Adjusted script command instance_enter to no longer require the instance name.
* Cleaned up script command instance_warpall.
* Adjusted script command instance_announce to check when instance ID is 0 rather than -1 since instance IDs are stored as unsigned now.
* Refactored all instance_id to unsigned short.
* Updated documentation to reflect changes.
Added support for Summoner Basic Skill to Kafra (fixes#1117)
* Added two new global NPC functions F_CanOpenStorage and F_CanChangeJob to remove redundancy.
Thanks to @secretdataz!
Fixes to some quests and typo errors
* Corrected miscellaneous Korean to English translations.
* Corrected the position and facing direction of NPC [Promotional Staff#iz] from [Onward to the New World] Quest (pre-renewal).
* Fixed NPC [Iromo's Mother#ep3_2] from [Alberta Boy] Quest where players could have their quest progress reset.
* Fixed NPC [The Blacksmith#rus06] from [Koschei the Immortal] Quest giving Iron_Boots01 instead of Iron_Boots02 to Ninja and Gunslinger classes.
Thanks to @AtlantisRO!
The boots Iron_Boots01 is only equipable by Swordsman Class, Archer Class, Merchant Class and Thief Class.
Any other job must receive Iron_Boots02 (included Ninja and Gunslinger).
When player is in step 9 from Alberta Boy quest (variable "ep13_2_hiki"), this NPC restart the entire quest, because there is no case to prevent variable > 8.
* Added mapflag `gvg_te`, `gvg_te_castle`, this is will be activated during WOE:TE sessions. These changes are needed because of:
* If `gvgon` is used, TE castles become `gvg`, it makes the restriction failure. Items that are supposed to only can be used/equipped in TE Castles, also affected in 'normal' GVG/WOE maps.
* These flags used form `item_noequip`, `skill_nocast`, and `status_disabled` flag 16. (If just assume TE Castles are Restricted Zone 8, the failure will occurs as point 1 above).
* Added Restricted Zone 8 for TE Guild Dungeons, to prevent marriage skills can be casted there.
* Added command `gvgon3` to set GVG for WOE:TE Castles.
* Added command `canParticipateSiegeTE` is 'hardcoded' function to check player's job that can participate in WOE:TE.
* Current usages in `GD_EMERGENCYCALL` and replace the in-script function.
* Changed default config `allow_consume_restricted_item` to 'no'. All restricted usable/consumable/healing items are always failed to be used.
* Changed the GVG items/skills restriction check. "Item cannot be equipped in GVG maps" are supposed to ignore the agit flag statuses, as long as the map is GVG flagged, items/skills are always restricted and otherwise.
* Moved previous entries of `skill_nocast` flag 16 as hardcode (for now).
Signed-off-by: Cydh Ramdh <cydh@pservero.com>
* Added missing UMOB_CANMOVETICK option.
* Restructured script command getunittype return values to match the order of script command getmapxy to allow for more universal usage.
* Created constants for script commands getmapxy and getunittype.
* Updated NPCs using script command getmapxy to use the new constant values.
* Updated Battleground NPCs to use constant value for script command setunitdata.
Todo:
Review the unittalk part (only the message should be displayed)
- unittalk display the npc hidden name
- npctalk display the visible name and don't have parameter to call another npc