Commit graph

10 commits

Author SHA1 Message Date
Paul Campbell
572ddcae05 feat: Scriptable tasks
- Added the ability to define server scheduler tasks in csx files.
- Redefined all existing tasks as scripts.
2026-04-25 09:21:49 -04:00
Ryan Yappert
d87de4412b Typo fix; consistency and bugfix pass on skills between BBM and normal gameplay. 2025-06-01 18:32:05 -07:00
Paul Campbell
6dbd85a4ba feat: Default Drops
Added a mechanism for the server to assign a close approximation of the
retail gathering items across the game world.
2025-04-10 20:44:05 -04:00
Paul Campbell
305a4d503b feat: Add support for contents release
- 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
2025-04-01 20:57:15 -04:00
Paul Campbell
75ff836696 feat: Limit Break
Added the ability to use the limit break option at Craig under the
"Custom-Made Arms" category.
2025-03-27 00:18:46 -04:00
Paul Campbell
67ce3cc44f feat: Add area rank caution spots
- 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
2025-03-06 21:55:39 -05:00
Paul Campbell
0a2db63eaf feat: Namespace LibDdon functions
Added LibDdon functions to various "namespaces" to declutter the dot
syntax.
2025-02-26 10:37:23 -05:00
Paul Campbell
060de5cb1c feat: Implement the EXM "Recurrence of Darkness"
- 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.
2025-02-26 10:28:00 -05:00
Paul Campbell
2abf7bb276 feat: Add support for debugging csx scripts
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.
2025-02-21 20:03:44 -05:00
Paul Campbell
08baa54e3e feat: Extract point modification behavior to scripts
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.
2025-02-21 16:37:45 -05:00