ddon-server/Arrowgene.Ddon.GameServer/Scripting/Modules/GameServerScriptModule.cs
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

43 lines
2.3 KiB
C#

using Arrowgene.Ddon.Database.Model;
using Arrowgene.Ddon.Server.Scripting;
using Arrowgene.Ddon.Shared;
using Microsoft.CodeAnalysis;
using Microsoft.CodeAnalysis.Scripting;
using System.Linq;
using System.Runtime.CompilerServices;
namespace Arrowgene.Ddon.GameServer.Scripting
{
public abstract class GameServerScriptModule : ScriptModule
{
public override ScriptOptions Options()
{
return ScriptOptions.Default
.AddReferences(MetadataReference.CreateFromFile(typeof(AccountStateType).Assembly.Location))
.AddReferences(MetadataReference.CreateFromFile(typeof(AssetRepository).Assembly.Location))
.AddReferences(MetadataReference.CreateFromFile(typeof(DdonGameServer).Assembly.Location))
.AddReferences(MetadataReference.CreateFromFile(typeof(DynamicAttribute).Assembly.Location))
.AddReferences(MetadataReference.CreateFromFile(typeof(Enumerable).Assembly.Location))
.AddReferences(MetadataReference.CreateFromFile(typeof(LibDdon).Assembly.Location))
.AddReferences(MetadataReference.CreateFromFile(typeof(LibUtils).Assembly.Location))
.AddImports("System", "System.Collections", "System.Collections.Generic", "System.Linq")
.AddImports("System.Runtime.CompilerServices")
.AddImports("Arrowgene.Ddon.Database")
.AddImports("Arrowgene.Ddon.Database.Model")
.AddImports("Arrowgene.Ddon.GameServer")
.AddImports("Arrowgene.Ddon.GameServer.Characters")
.AddImports("Arrowgene.Ddon.GameServer.Chat")
.AddImports("Arrowgene.Ddon.GameServer.Context")
.AddImports("Arrowgene.Ddon.GameServer.Party")
.AddImports("Arrowgene.Ddon.GameServer.Quests")
.AddImports("Arrowgene.Ddon.GameServer.Scripting")
.AddImports("Arrowgene.Ddon.GameServer.Scripting.Interfaces")
.AddImports("Arrowgene.Ddon.Server.Scripting")
.AddImports("Arrowgene.Ddon.Shared")
.AddImports("Arrowgene.Ddon.Shared.Entity.PacketStructure")
.AddImports("Arrowgene.Ddon.Shared.Entity.Structure")
.AddImports("Arrowgene.Ddon.Shared.Model")
.AddImports("Arrowgene.Ddon.Shared.Model.Quest");
}
}
}