- Added the virtual function IsUnlocked to IOfficialPawnScript
- By default, if no implementation is supplied, it returns true
- Updated README.md on how to use this new feature
- Added support for server admin to define offical pawns.
- Added support for dynamically defined official pawns which change
based on the hiring player level.
- Added a new settings file official_pawns.csx
- Added new official pawns
- Annuate, Puala, Rumi and WhiteKnight
- Enemies which are now labeled as an area boss will reward AP when
the group is defeated.
- The amount of AP is configurable via the new setting AreaBossApReward.
- The default value is 500 AP for the current Area the defeated enemy
is in.
- Added a new member to instance enemy properties which allows a rank to
be assigned to a scripts. The rank helps to control the order scripts
are executed. The scripts with a lower rank are executed before
scripts with a higher rank.
- Added a new script module InstanceEnemyDropGenerator. This module can
be used to have the server assign drops to an enemy when killed.
Intended to eventually replace the event item generator via json.
- Fixed a few await warnings introduced from PR #919 related to
scripting.
- Fixed an incorrect NPC line in for Nedo in the main story quest "A Desperate Infiltration".
- q00030125.csx
- Fixed an issue where job training markers show before the current
class unlocks job training.
- Updated the AR enemy spawn position for White Sands Riverbank in Dowe
Valley.
- ar03_white_sands_riverbank.csx
- Updated the spawn location of the enemies for world quest After That Dragon!
- q20035009.json
- q20035009_1.json
- q20035009_2.json
- Fixed an issue where in Lestania it is possible to query a group of
enemies before the world quests are queried which results in the quest
enemy not appearing.
- Added support for the 3.0 HiBO tree.
- Enabled Epitaph Road (Rathnite)
- Updated q60300020.json
- Moved unlock from MSQ to personal quest
- Reorganized scripts for job orb tree
- Delete old ones if copy+paste
- Added support for job emblems
- Created new personal quests to unlock emblems.
- Added support for emblems using the menus at Renton.
- Created new handlers and packets for the new menus.
- Add new scripting module for "Skill Augmentation"
- Locked EM4 skills behind completion of EM4
- Implemented tree layouts for all jobs
- Implemented new REQ, RES and handlers for Skill Augmentation
- Implemented the quest Skill Augmentation Guidance of a Renewed White Dragon
- Implemented augmentation trials for all jobs
- Updated adventure guide logic to handle when to present quests better.
- Adjusted how personal quests for vocation are distributed to remove
the need to change areas or log out to get them to show.
Thanks for help from multiple players to help us collect the skill tree
data.
Co-authored-by: 𝔢𝔪𝔪𝔞 𝔢𝔳𝔢𝔯𝔤𝔞𝔯𝔡
Co-authored-by: Cold Blood
Co-authored-by: Genzyuro
Co-authored-by: あゆふぁ
Co-authored-by: 鬼頭オパーリン
Co-authored-by: GaethanT
Co-authored-by: Sapphiratelaemara
Co-authored-by: King Flipsta
- Added support for the adventure guide.
- Add support for quests to unlock different content and menus.
- Implemented a world manage quest to track job tutorials.
- Implemented the following personal quests which unlock systems:
- The Arisen's Abilities
- Reliable Source of Information
- Crafted Token of the Heart
- Gathering in the Clan Tavern
- Lestania's Best Dressed
- Road to Mastery
- The Temple's Tradespeople
- Living with the Partner Pawn
- Shining Within a Loyal Heart
- Extend Garden
- Custom-Made Workshop 1: Searcher's Return
- Custom-Made Workshop 2: Limit Break
- Custom-Made Workshop 3: Ultimate Arms Synthesis
- Arms With the Power of the Dragon 1
- Arms With the Power of the Dragon 2
- Implemented the following job quests:
- Fighter Tactics Trial: A Stubborn Shield
- Fighter Tactics Trial: Break Attack
- Seeking the Master Fighter
- Priest Tactics Trial: Purification
- Priest Tactics Trial: Break Attack
- Seeking the Master Priest
- Seeker Tactics Trial: A Whirlwind
- Seeking the Master Seeker
- Shield Sage Tactics Trial: A Magick Shield
- Shield Sage Tactics Trial: Break Attack
- Seeking the Master Shield Sage
- Hunter Tactics Trial: An Ambushing Bow
- Hunter Tactics Trial: Break Attack
- Seeking the Master Hunter
- Sorcer Tactics Trial: A Magick Attack
- Seeking the Master Sorcerer
- Element Archer Tactics Trial: A Magick Bow
- Seeking the Master Element Archer
- Warrior Tactics Trial: A Strong Sword
- Seeking the Master Warrior
- Alchemist Tactics Trial: Alchemy
- Seeking the Master Alchemist
- Spirit Lancer Tactics Trial: A Spirit Lance
- Seeking the Master Spirit Lancer
- Rewrote or updated the following main story quests:
- Rewrote "Resolutions and Omens" as a quest script
- Updated "The Slumbering God" to use newer JSON block types
- Rewrote "Soldiers of the Rift" as a quest script
- Rewrote "The Crimson Crystal" as a quest script
- Updated "The Dull Grey Ark" to have proper enemies for the boss fight
- Updated "Envoy of Reconciliation" to have proper enemy nameplates in
the cellar
- Updated additional existing main story quests to distribute contents released
- Split IsBo an IsHo enemy parameter from the BO amount field to match
behavior of old playback videos where an enemy has a normal health bar
but still rewards BO/HO
- Added a generic mechanism to handle quest work items
- Added the message "The entire party has returned to a safe area." when
the instance gets reset while the player is in a party
- Added better unlock support to json
- Added a new EnemySetGenerator interface for selecting enemies for a particular enemy group.
- Implemented the following enemy set generators:
- QuestEnemySetGenerator
- EpitaphRoadEnemySetGenerator
- CautionSpotEnemySetGenerator
- WorldEnemySetGenerator
- Added a new EnemyPropertyGenerator for modifying attributes of selected enemies for a set.
- New scripting module was introduced to allow a variety of properties to be applied
- Implemented a new .csx script to auto assign BO to enemies in Epitaph Road dungeons
when certain requirements are met.
- Implemented a new ,csx script to handle adjustments of enemies in The Rift when
performing a pawn rescue.
- Updated EXP mixin interface and default implementation
- Added a new CharacterCommon parameter.
- Implemented an algorithm which attempts to calculate enemy exp
based on player level, enemy level and other properites such as
boss, quest and nameplate modifiers.
- Add support for enemy caution spots
- Implemented a new "World Manage" quest which handles sending the "Caution" message to
players when they come across a "Caution Spot".
- Added new scripting module which allows "Caution Spot" enemies to be defined.
- Implemented caution spots for:
- Hidell Plains
- Breya Coast
- Mysree Forest
- Volden Mines
- Dowe Valley
- Mysree Grove
- Deenan Woods
- Betland Plains
- Northern Betland Plains
- Zandora Wastelands
- Eastern Zandora
- Mergoda Ruins
- Partial implemention of the EXM "Recurrence of Darkness" (q50204000) using the
scripted quest system.
- Moved all scripts to a seperate Arrowgene.Ddon.Scripts project to
support out of project comde completion in csx scripts.
- Updated the README.md in the scripting project with details on how to
enable csx autocompletion in Visual Studio Code.
- Enabled scripted quests to have some dyanmic state for the instance of
the quest.
- Continued to build out QuestBlockUtil and QuestResultCommnandUtil to
make it more convient to write scripted quests.
- Updated the script callback function to pass a new object
QuestCallbackParam and updated the function to support passing
anonymous functions as an argument.
- Moved index calculations for JSON quests to the asset deserializer.
- Adjusted some "discovered quests" to not show the marker on the map
until after the quest is engaged.
- Renamed the script_dll directory to script_assemblies which is used
for csx debug support.
- Updated the README.md for the scripts directory.
If the build is a debug build, it is possible to debug csx scripts
loaded by the server. Fixed an issue where the datetime range compare
was incorrect with a peroid crosses from one month to the next. Added a
new field EnableCancel which can be used by tutorial quests.
Extracted all the different point modification algorithms to scripts so
it's easier for server admins to adjust and add new modifiers to their
servers at runtime. A new "point modifiers" scripting module was added.
The generic term point means exp, jp and pp earned by players and pawns.
Moved settings from the generic GameLogicSettings.csv to a new settings
file PointModifiers.csx where appropriate.
Each modifier defines the following properties
- The point type that is being modified.
- Which quanity of point type it impacts (base amount or bonus amount).
- The behavior of the multiplier (additive or multiplicative).
- The source of point type (enemy vs quest).
- The player types it applies to (Player and/or MyPawn).
Like other scripting modules, a README.md file is created in the module
directory outlining basic usage and guidelines for the scripting module.
- Implemented the EXM "Battle for Gritten Fort: Recapture Battle"
- Updated scripted quest system to support EXMs
- Added a new random quest reward type that doesn't depend on chance
amounts.
- Created a new scripting module to handle chat commands.
- Migrated all existing chat commands to scripted chat commands.
- Updated the help command to only list commands which fall within the
AccountState limitations.
- Updated many chat commands to have an account state of type Admin.
- Added a new settings file ChatCommands.csx.
- Support hotloading of modifying or adding new chat commands.
- Adjust how QuestBlocks are accessed when executing the quest state
machine.
- Add a non-terminating end block to the decoration quests.
- Store Variant quests by QuestScheduleId instead of storing the Quest
object.
- Added the ability to define quests using C# script.
- Implemented the 2018 Christmas quests using C# script.
- Implemented the 2017 Halloween quests using C# script.
- Implemented the 2018 Halloween quests using C# script.
- Added the ability to load external scripts from the "libs" directory
in scripts loaded by the GameServer project.
- Added new documentation for scripts.
- Updated existing 'holiday_personal_quests.md' to include directions
for enabling the event quests.
- Created a new 'game_item' module.
- Created RookiesRing.csx in the 'game_item' module.
- Moved Rookie's Ring settings from general server logic to specific
RookiesRing.csx settings file.
- Implemented a new 'constant' and 'dynamic' mode for the Rookie's Ring.
- Added a new option to completely disable the Rookie's Ring.
- Refactored code so implementation can be shared between Server and
DdonGameServer.
- Moved settings into settings module and implemented an example using a
less structured scripting module interface.
- Created new ScriptableSettings class to assist with interacting with
non-structured settings module.
- Created README.md files for suggestions and guidelines for module
implementation.
- Added Roslyn to the project.
- Added an example of parsing game logic settings from a .csx file.
- Made GameLogicSettings.csx hotloadable.
- Adjusted exp point modifier settings for enemies and quests to be
hotload friendly.
- Implemented a ScriptModule interface for GameServer scripts.
- Converted extended NPC facilities into scripting .csx files for each
NPC and made directory hotloadable. New NPC options can be added after
the server starts without a restart.