An exception was thrown while translating to workshop.
System.NullReferenceException: Object reference not set to an instance of an object.
at Deltin.Deltinteger.Parse.Lambda.Workshop.LambdaBuilder.GetCompatibleLambda(InstanceAnonymousTypeLinker typeLinker, IWorkshopPortableFunctionIdentifier portableFunction) in C:\Users\HDdel\Documents\GitHub\Overwatch-Script-To-Workshop\Deltinteger\Deltinteger\Parse\Lambda\Workshop\PortableBuilder.cs:line 41
at Deltin.Deltinteger.Parse.Lambda.Workshop.LambdaBuilder.GetIdentifier(ActionSet actionSet, IWorkshopPortableFunctionIdentifier portableFunction) in C:\Users\HDdel\Documents\GitHub\Overwatch-Script-To-Workshop\Deltinteger\Deltinteger\Parse\Lambda\Workshop\PortableBuilder.cs:line 33
at Deltin.Deltinteger.Parse.Lambda.Workshop.CaptureEncoder.Encode(ActionSet actionSet, CallMethodGroup methodGroup) in C:\Users\HDdel\Documents\GitHub\Overwatch-Script-To-Workshop\Deltinteger\Deltinteger\Parse\Lambda\Workshop\CaptureEncoder.cs:line 38
at Deltin.Deltinteger.Parse.CreateArrayAction.Parse(ActionSet actionSet) in C:\Users\HDdel\Documents\GitHub\Overwatch-Script-To-Workshop\Deltinteger\Deltinteger\Parse\Expression.cs:line 134
at Deltin.Deltinteger.Parse.VariableInstance.VariableInstanceOption.GetValue(ActionSet actionSet) in C:\Users\HDdel\Documents\GitHub\Overwatch-Script-To-Workshop\Deltinteger\Deltinteger\Parse\Variables\User\VarInstance.cs:line 84
at Deltin.Deltinteger.Parse.Functions.Builder.Virtual.MacroContentBuilder.OnlyOne() in C:\Users\HDdel\Documents\GitHub\Overwatch-Script-To-Workshop\Deltinteger\Deltinteger\Parse\Functions\Builder\Virtual\MacroContentBuilder.cs:line 30
at Deltin.Deltinteger.Parse.Functions.Builder.Virtual.AbstractVirtualContentBuilder`1.Build() in C:\Users\HDdel\Documents\GitHub\Overwatch-Script-To-Workshop\Deltinteger\Deltinteger\Parse\Functions\Builder\Virtual\AbstractVirtualContentBuilder.cs:line 27
at Deltin.Deltinteger.Parse.VariableInstance.ToMacro(ActionSet actionSet) in C:\Users\HDdel\Documents\GitHub\Overwatch-Script-To-Workshop\Deltinteger\Deltinteger\Parse\Variables\User\VarInstance.cs:line 76
at Deltin.Deltinteger.Parse.CallVariableAction.Parse(ActionSet actionSet) in C:\Users\HDdel\Documents\GitHub\Overwatch-Script-To-Workshop\Deltinteger\Deltinteger\Parse\Variables\Semantics\CallVariableAction.cs:line 23
at Deltin.Deltinteger.Parse.IInvokeResult.GetParameterValuesAsWorkshop(ActionSet actionSet, IInvokeResult invokeResult) in C:\Users\HDdel\Documents\GitHub\Overwatch-Script-To-Workshop\Deltinteger\Deltinteger\Parse\Functions\Semantics\IInvokeInfo.cs:line 173
at Deltin.Deltinteger.Parse.FunctionInvokeResult.Parse(ActionSet actionSet) in C:\Users\HDdel\Documents\GitHub\Overwatch-Script-To-Workshop\Deltinteger\Deltinteger\Parse\Functions\Semantics\IInvokeInfo.cs:line 215
at Deltin.Deltinteger.Parse.TypeOperation.Resolve(ActionSet actionSet, IExpression left, IExpression right) in C:\Users\HDdel\Documents\GitHub\Overwatch-Script-To-Workshop\Deltinteger\Deltinteger\Parse\Types\Operators\ITypeOperation.cs:line 56
at Deltin.Deltinteger.Parse.IInvokeResult.GetParameterValuesAsWorkshop(ActionSet actionSet, IInvokeResult invokeResult) in C:\Users\HDdel\Documents\GitHub\Overwatch-Script-To-Workshop\Deltinteger\Deltinteger\Parse\Functions\Semantics\IInvokeInfo.cs:line 173
at Deltin.Deltinteger.Parse.FunctionInvokeResult.Parse(ActionSet actionSet) in C:\Users\HDdel\Documents\GitHub\Overwatch-Script-To-Workshop\Deltinteger\Deltinteger\Parse\Functions\Semantics\IInvokeInfo.cs:line 215
at Deltin.Deltinteger.Parse.CallVariableAction.Parse(ActionSet actionSet) in C:\Users\HDdel\Documents\GitHub\Overwatch-Script-To-Workshop\Deltinteger\Deltinteger\Parse\Variables\Semantics\CallVariableAction.cs:line 25
at Deltin.Deltinteger.Parse.DataTypeAssigner.GetResult(GettableAssignerValueInfo info) in C:\Users\HDdel\Documents\GitHub\Overwatch-Script-To-Workshop\Deltinteger\Deltinteger\Parse\Variables\GettableAssigners\DataTypeAssigner.cs:line 54
at Deltin.Deltinteger.Parse.IGettableAssigner.GetValue(GettableAssignerValueInfo info) in C:\Users\HDdel\Documents\GitHub\Overwatch-Script-To-Workshop\Deltinteger\Deltinteger\Parse\Variables\GettableAssigners\IGettableAssigner.cs:line 64
at Deltin.Deltinteger.Parse.DefineAction.Translate(ActionSet actionSet) in C:\Users\HDdel\Documents\GitHub\Overwatch-Script-To-Workshop\Deltinteger\Deltinteger\Parse\Variables\Semantics\DefineAction.cs:line 23
at Deltin.Deltinteger.Parse.BlockAction.Translate(ActionSet actionSet) in C:\Users\HDdel\Documents\GitHub\Overwatch-Script-To-Workshop\Deltinteger\Deltinteger\Parse\Block.cs:line 36
at Deltin.Deltinteger.Parse.DeltinScript.ToWorkshop(Func`2 addRules) in C:\Users\HDdel\Documents\GitHub\Overwatch-Script-To-Workshop\Deltinteger\Deltinteger\Parse\Translate.cs:line 259
at Deltin.Deltinteger.Parse.DeltinScript..ctor(TranslateSettings translateSettings) in C:\Users\HDdel\Documents\GitHub\Overwatch-Script-To-Workshop\Deltinteger\Deltinteger\Parse\Translate.cs:line 57
main.del:
void ExampleMutation_Init() {
PlayerEnter = (players) => {
// Do a thing
};
PlayerExit = (players) => {
// Revert the previous thing
};
PlayerTick = (players) => {
// Do a thing every tick
};
FixedTickRate = 2;
}
globalvar (() => void)[] MUTATIONS: [
ExampleMutation_Init
];
globalvar Boolean EnableZone = false;
globalvar Any MainEffect = null; // Ring effect.
globalvar Any[] AdditionalEffects = []; // Other effects created by some mutations.
globalvar Player[] PlayersInside = []; // All players currently inside zone.
globalvar (Player[]) => void PlayerEnter; // Callback when player enters the zone.
globalvar (Player[]) => void PlayerExit; // Callback when player exits the zone.
globalvar (Player[]) => void PlayerTick; // Callback when player loiters in the zone.
globalvar () => void Cleanup; // Callback when the zone is about to be deleted.
globalvar Number FixedTickRate = 60; // Number of tick calls per second.
rule: 'On Game In Progress - Enable Mutation Zone.'
Event.OngoingGlobal
if(IsGameInProgress()) {
Wait(30);
EnableZone = true;
}
rule: 'While Zone Enabled - Maintain Mutation Zone.'
Event.OngoingGlobal
if(EnableZone) {
// Pick random mutation and initialize it.
() => void mutation = MUTATIONS[RandomInteger(0, CountOf(MUTATIONS) - 1)];
mutation.Invoke();
// Create ring effect and store it.
CreateEffect(AllPlayers(), Effect.Ring, Color.Violet, ObjectivePosition(ObjectiveIndex()), 21.444);
MainEffect = LastCreatedEntity();
// Clean up after 30 seconds.
Wait(30.0, WaitBehavior.AbortWhenFalse);
Cleanup.Invoke();
PlayerEnter = null;
PlayerExit = null;
PlayerTick = null;
// Wait 10 seconds before creating another one.
Wait(10.0, WaitBehavior.AbortWhenFalse);
LoopIfConditionIsTrue();
}
rule: 'While Zone Enabled - Update PlayersInside'
Event.OngoingGlobal
if(EnableZone) {
// Report all players within the radius.
Player[] newRadiusCheck = PlayersWithinRadius(ObjectivePosition(ObjectiveIndex()), 21.444, Team.All, RadiusLOS.Off);
// Track all new players.
Player[] playersEntered = newRadiusCheck.FilteredArray((player) => {
return !PlayersInside.Contains(player);
});
// Track all leaving players.
Player[] playersExited = PlayersInside.FilteredArray((player) => {
return !newRadiusCheck.Contains(player);
});
// Do the callbacks.
PlayerEnter.Invoke(playersEntered);
PlayerExit.Invoke(playersExited);
// Update PlayersInside.
PlayersInside = newRadiusCheck;
// Do it again.
MinWait();
LoopIfConditionIsTrue();
}
rule: 'Run Zone Tick'
Event.OngoingGlobal
if(EnableZone) {
PlayerTick.Invoke(PlayersInside);
Wait(1 / FixedTickRate);
LoopIfConditionIsTrue();
}
Workshop Output:
main.del
: