ported from perforce

This commit is contained in:
2026-04-19 00:43:27 +02:00
commit 6c0c33f5d4
700 changed files with 19735 additions and 0 deletions

View File

@@ -0,0 +1,3 @@
namespace RobotAndDonkey.Game.Cards.Glitches;
public record Bitflip() : ModifyInstructionPermanently(EModifierId.Corrupt, ECard.Bitflip);

View File

@@ -0,0 +1,34 @@
using System;
using System.Collections.Generic;
using RobotAndDonkey.Game.Board;
using RobotAndDonkey.Game.Data;
using RobotAndDonkey.Game.Execution.Results;
using RobotAndDonkey.Game.GameState;
using RobotAndDonkey.Game.Intents;
using RobotAndDonkey.Game.Modifiers;
namespace RobotAndDonkey.Game.Cards.Glitches;
public record Drought() : GlitchCard(ECard.Drought)
{
public override void CreateIntents(Cell? avatarCell, CoreLoop coreLoop, Guid requestId, List<Intent> intents, List<Result> results)
{
var cells = coreLoop.Board.Cells;
foreach (var cell in cells)
{
if (cell.Type == ECellType.Fertile)
{
intents.Add(new ModifyCell(cell, EModifierId.Drought, EModifierDuration.Temporary));
}
else if (cell.Type == ECellType.Grass)
{
if (coreLoop.Random.NextSingle() < Balancing.Instance.DroughtTransformProbability)
intents.Add(new ModifyCell(cell, EModifierId.Drought, EModifierDuration.Temporary));
}
}
}
public override string ToolTip => "Fertility in the land is drastically reduced.";
public override Modifier[] TooltipModifiers => [new DroughtModifier(EModifierDuration.Temporary)];
}

View File

@@ -0,0 +1,16 @@
using System;
using System.Collections.Generic;
using RobotAndDonkey.Game.Board;
using RobotAndDonkey.Game.Execution.Results;
using RobotAndDonkey.Game.GameState;
using RobotAndDonkey.Game.Intents;
namespace RobotAndDonkey.Game.Cards.Glitches;
public record GlitchCard(ECard Id) : Card(Id, ECardType.Glitch, ERarity.Common, 0, 0)
{
public override void CreateIntents(Cell? avatarCell, CoreLoop coreLoop, Guid requestId, List<Intent> intents, List<Result> results)
{
base.CreateIntents(avatarCell, coreLoop, requestId, intents, results);
}
}

View File

@@ -0,0 +1,21 @@
using System;
using System.Collections.Generic;
using RobotAndDonkey.Game.Board;
using RobotAndDonkey.Game.Execution.Results;
using RobotAndDonkey.Game.GameState;
using RobotAndDonkey.Game.Intents;
using RobotAndDonkey.Game.Modifiers;
namespace RobotAndDonkey.Game.Cards.Glitches;
public record Gravity() : GlitchCard(ECard.Gravity)
{
public override void CreateIntents(Cell? avatarCell, CoreLoop coreLoop, Guid requestId, List<Intent> intents, List<Result> results)
{
intents.Add(new ModifyRobot(EModifierId.Gravity, EModifierDuration.Temporary));
}
public override string ToolTip => "Carry capacity temporarily reduced.";
public override Modifier[] TooltipModifiers => [new GravityModifier(EModifierDuration.Temporary)];
}

View File

@@ -0,0 +1,21 @@
using System;
using System.Collections.Generic;
using RobotAndDonkey.Game.Board;
using RobotAndDonkey.Game.Execution.Results;
using RobotAndDonkey.Game.GameState;
using RobotAndDonkey.Game.Intents;
using RobotAndDonkey.Game.Modifiers;
namespace RobotAndDonkey.Game.Cards.Glitches;
public record HeatWave() : GlitchCard(ECard.HeatWave)
{
public override void CreateIntents(Cell? avatarCell, CoreLoop coreLoop, Guid requestId, List<Intent> intents, List<Result> results)
{
intents.Add(new ModifyRobot(EModifierId.HeatWave, EModifierDuration.Temporary));
}
public override string ToolTip => "Energy consumption temporarily increased.";
public override Modifier[] TooltipModifiers => [new HeatWaveModifier(EModifierDuration.Temporary)];
}

View File

@@ -0,0 +1,7 @@
using System;
using System.Collections.Generic;
using RobotAndDonkey.Game.Board;
using RobotAndDonkey.Game.Execution.Results;
namespace RobotAndDonkey.Game.Cards.Glitches;
public record Latency() : ModifyInstructionPermanently(EModifierId.Throttled, ECard.Latency);

View File

@@ -0,0 +1,3 @@
namespace RobotAndDonkey.Game.Cards.Glitches;
public record LightningStorm() : ModifyInstructionsTemporarily(EModifierId.Unreliable, ECard.LightningStorm);

View File

@@ -0,0 +1,3 @@
namespace RobotAndDonkey.Game.Cards.Glitches;
public record MeteorStorm() : ModifyInstructionsTemporarily(EModifierId.RaceCondition, ECard.MeteorStorm);

View File

@@ -0,0 +1,21 @@
using RobotAndDonkey.Game;
using RobotAndDonkey.Game.Board;
using RobotAndDonkey.Game.Cards;
using RobotAndDonkey.Game.Cards.Glitches;
using RobotAndDonkey.Game.Execution.Results;
using RobotAndDonkey.Game.GameState;
using RobotAndDonkey.Game.Intents;
using RobotAndDonkey.Game.Modifiers;
public abstract record ModifyInstructionPermanently(EModifierId Modifier, ECard Id) : GlitchCard(Id)
{
public override void CreateIntents(Cell? avatarCell, CoreLoop coreLoop, Guid requestId, List<Intent> intents, List<Result> results)
{
var victim = coreLoop.PatchDeck[coreLoop.Random.Next(coreLoop.PatchDeck.Count)];
intents.Add(new ModifyCard(victim, Modifier, EModifierDuration.Permanent, ECardLocation.Deck));
}
public override string ToolTip => $"Adds {Modifier} to one instruction, permanently.";
public override Modifier[] TooltipModifiers => [ModifyCard.Create(Modifier, EModifierDuration.Permanent)];
}

View File

@@ -0,0 +1,20 @@
using RobotAndDonkey.Game;
using RobotAndDonkey.Game.Board;
using RobotAndDonkey.Game.Cards;
using RobotAndDonkey.Game.Cards.Glitches;
using RobotAndDonkey.Game.Execution.Results;
using RobotAndDonkey.Game.GameState;
using RobotAndDonkey.Game.Intents;
using RobotAndDonkey.Game.Modifiers;
public abstract record ModifyInstructionsTemporarily(EModifierId Modifier, ECard Id) : GlitchCard(Id)
{
public override void CreateIntents(Cell? avatarCell, CoreLoop coreLoop, Guid requestId, List<Intent> intents, List<Result> results)
{
intents.AddRange(coreLoop.PatchDeck.Select(victim => new ModifyCard(victim, Modifier, EModifierDuration.Temporary, ECardLocation.Deck)));
}
public override string ToolTip => $"Adds {Modifier} to all instructions, temporarily.";
public override Modifier[] TooltipModifiers => [ModifyCard.Create(Modifier, EModifierDuration.Temporary)];
}

View File

@@ -0,0 +1,22 @@
using System;
using System.Collections.Generic;
using RobotAndDonkey.Game.Board;
using RobotAndDonkey.Game.Data;
using RobotAndDonkey.Game.Execution.Results;
using RobotAndDonkey.Game.GameState;
using RobotAndDonkey.Game.Intents;
using RobotAndDonkey.Game.Modifiers;
namespace RobotAndDonkey.Game.Cards.Glitches;
public record Pest() : GlitchCard(ECard.Pest)
{
public override void CreateIntents(Cell? avatarCell, CoreLoop coreLoop, Guid requestId, List<Intent> intents, List<Result> results)
{
intents.Add(new ModifyRobot(EModifierId.Pest, EModifierDuration.Temporary));
}
public override string ToolTip => $"Deliveries temporarily reduced by {Balancing.Instance.PestDeliveryMultiplier * 100:N0}%.";
public override Modifier[] TooltipModifiers => [new PestModifier(EModifierDuration.Temporary)];
}

View File

@@ -0,0 +1,34 @@
using System;
using System.Collections.Generic;
using RobotAndDonkey.Game.Board;
using RobotAndDonkey.Game.Data;
using RobotAndDonkey.Game.Execution.Results;
using RobotAndDonkey.Game.GameState;
using RobotAndDonkey.Game.Intents;
using RobotAndDonkey.Game.Modifiers;
namespace RobotAndDonkey.Game.Cards.Glitches;
public record Rain() : GlitchCard(ECard.Rain)
{
public override void CreateIntents(Cell? avatarCell, CoreLoop coreLoop, Guid requestId, List<Intent> intents, List<Result> results)
{
var cells = coreLoop.Board.Cells;
foreach (var cell in cells)
{
if (cell.Type == ECellType.Rocky)
{
intents.Add(new ModifyCell(cell, EModifierId.Rain, EModifierDuration.Temporary));
}
else if (cell.Type == ECellType.Grass)
{
if (coreLoop.Random.NextSingle() < Balancing.Instance.RainTransformProbability)
intents.Add(new ModifyCell(cell, EModifierId.Rain, EModifierDuration.Temporary));
}
}
}
public override string ToolTip => "Increases fertility throughout the map.";
public override Modifier[] TooltipModifiers => [new RainModifier(EModifierDuration.Temporary)];
}

View File

@@ -0,0 +1,3 @@
namespace RobotAndDonkey.Game.Cards.Glitches;
public record ShortCircuit() : ModifyInstructionPermanently(EModifierId.Unreliable, ECard.ShortCircuit);

View File

@@ -0,0 +1,3 @@
namespace RobotAndDonkey.Game.Cards.Glitches;
public record Slipstream() : ModifyInstructionPermanently(EModifierId.RaceCondition, ECard.Slipstream);

View File

@@ -0,0 +1,3 @@
namespace RobotAndDonkey.Game.Cards.Glitches;
public record SolarFlare() : ModifyInstructionsTemporarily(EModifierId.Corrupt, ECard.SolarFlare);

View File

@@ -0,0 +1,3 @@
namespace RobotAndDonkey.Game.Cards.Glitches;
public record WindStorm() : ModifyInstructionsTemporarily(EModifierId.Throttled, ECard.WindStorm);