Skip to content

Commit

Permalink
p34.3 (#507)
Browse files Browse the repository at this point in the history
  • Loading branch information
Sellafield authored Feb 3, 2025
1 parent 6282113 commit 9c6f60b
Show file tree
Hide file tree
Showing 23 changed files with 5,196 additions and 5,149 deletions.
3 changes: 3 additions & 0 deletions src/Perpetuum.Bootstrapper/Modules/EntitiesModule.cs
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@
using Perpetuum.Services.ProductionEngine.Facilities;
using Perpetuum.Services.ProductionEngine.ResearchKits;
using Perpetuum.Services.Relics;
using Perpetuum.Services.Relics.Relics;
using Perpetuum.Services.RiftSystem;
using Perpetuum.Services.TechTree;
using Perpetuum.Units;
Expand Down Expand Up @@ -322,6 +323,7 @@ protected override void Load(ContainerBuilder builder)
RegisterEntity<EPBoost>(builder);
RegisterEntity<Relic>(builder);
RegisterEntity<SAPRelic>(builder);
RegisterEntity<ArenaRelic>(builder);

builder.Register<Func<EntityDefault, Entity>>(x =>
{
Expand Down Expand Up @@ -653,6 +655,7 @@ void ByNamePatternAndFlag<T>(string substr, CategoryFlags cf, params Parameter[]
ByName<StrongholdEntryRift>(DefinitionNames.TARGETTED_RIFT); //OPP targetted rift
ByName<Relic>(DefinitionNames.RELIC); //OPP Relic
ByName<SAPRelic>(DefinitionNames.RELIC_SAP); //OPP outpost Relic
ByName<ArenaRelic>(DefinitionNames.RelicArenaRobot); //OPP Arena Relic

IContainer c = b.Build();

Expand Down
8 changes: 8 additions & 0 deletions src/Perpetuum.ExportedTypes/CategoryFlags.cs
Original file line number Diff line number Diff line change
Expand Up @@ -66,6 +66,10 @@ public enum CategoryFlags : long
cf_small_projectile_ammo = 0x000000000001030A,
cf_medium_projectile_ammo = 0x000000000002030A,
cf_large_projectile_ammo = 0x000000000003030A,

cf_hell_cannon_ammo = 0x000000000103030A,
cf_raven_cannon_ammo = 0x000000000203030A,

cf_missile_ammo = 0x000000000000040A,
cf_small_missile_ammo = 0x000000000001040A,
cf_medium_missile_ammo = 0x000000000002040A,
Expand Down Expand Up @@ -249,6 +253,10 @@ public enum CategoryFlags : long
cf_small_single_projectile = 0x000000010402070F,
cf_medium_single_projectile = 0x000000020402070F,
cf_large_single_projectile = 0x000000030402070F,

cf_hell_cannons = 0x000001030402070F,
cf_raven_cannons = 0x000002030402070F,

cf_aoe_projectile = 0x000000000502070F,
cf_aoe_projectile_tile = 0x000000010502070F,
cf_small_aoe_projectile_tile = 0x000001010502070F,
Expand Down
9,977 changes: 4,989 additions & 4,988 deletions src/Perpetuum.ExportedTypes/DefinitionNames.cs

Large diffs are not rendered by default.

6 changes: 3 additions & 3 deletions src/Perpetuum.RequestHandlers/EPBonusEvent.cs
Original file line number Diff line number Diff line change
Expand Up @@ -25,9 +25,9 @@ public void HandleRequest(IRequest request)
int bonusAmount = request.Data.GetOrDefault<int>(k.bonus);
int resultingBonus = existingBonus + bonusAmount;

int timeRemained = _eventService.GetTimeRemained().Hours;
int durationHours = request.Data.GetOrDefault<int>(k.duration);
int resultingTime = timeRemained + durationHours;
double timeRemained = _eventService.GetTimeRemained().TotalHours;
double durationHours = request.Data.GetOrDefault<double>(k.duration);
double resultingTime = timeRemained + durationHours;

bool checkArgs = resultingBonus >= MIN_BONUS && resultingBonus <= MAX_BONUS;
checkArgs = checkArgs && resultingTime <= MAX_DURATION.TotalHours;
Expand Down
2 changes: 1 addition & 1 deletion src/Perpetuum.Server/Perpetuum.Server.csproj.user
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|x64'">
<StartArguments>C:\PerpetuumServer\data</StartArguments>
<StartArguments>H:\PerpetuumServer\data</StartArguments>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|x64'">
<StartArguments>a:\work\server\genxy</StartArguments>
Expand Down
2 changes: 1 addition & 1 deletion src/Perpetuum.ServerService/App.config
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
<applicationSettings>
<Perpetuum.ServerService.Properties.Settings>
<setting name="GameRoot" serializeAs="String">
<value>C:\PerpetuumServer\data\</value>
<value>H:\PerpetuumServer\data\</value>
</setting>
</Perpetuum.ServerService.Properties.Settings>
</applicationSettings>
Expand Down
4 changes: 2 additions & 2 deletions src/Perpetuum.ServerService/Properties/Settings.Designer.cs

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion src/Perpetuum.ServerService/Properties/Settings.settings
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
<Profiles />
<Settings>
<Setting Name="GameRoot" Type="System.String" Scope="Application">
<Value Profile="(Default)">C:\PerpetuumServer\data\</Value>
<Value Profile="(Default)">H:\PerpetuumServer\data\</Value>
</Setting>
</Settings>
</SettingsFile>
1 change: 1 addition & 0 deletions src/Perpetuum/Modules/EffectModules/ExcavatorModule.cs
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,7 @@ protected override void SetupEffect(EffectBuilder effectBuilder)
.SetOwnerToSource()
.WithPropertyModifier(stealthStrengthModifier.ToPropertyModifier())
.WithPropertyModifier(miningAmountModifier.ToPropertyModifier())
.WithPropertyModifier(harvestingAmountModifier.ToPropertyModifier())
.WithRadiusModifier(effectEnhancerAuraRadiusModifier.Value);
}
}
Expand Down
2 changes: 1 addition & 1 deletion src/Perpetuum/Modules/HarvesterModule.cs
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@ public override void UpdateProperty(AggregateField field)
case AggregateField.effect_harvesting_amount_modifier:
case AggregateField.drone_amplification_harvesting_amount_modifier:
case AggregateField.drone_remote_command_translation_harvesting_amount_modifier:
case AggregateField.effect_excavator_mining_amount_modifier:
case AggregateField.effect_excavator_harvesting_amount_modifier:
{
_harverstingAmountModifier.Update();

Expand Down
2 changes: 1 addition & 1 deletion src/Perpetuum/Modules/LargeHarvesterModule.cs
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@

namespace Perpetuum.Modules
{
public class LargeHarvesterModule : HarvesterModule
public sealed class LargeHarvesterModule : HarvesterModule
{
public LargeHarvesterModule(CategoryFlags ammoCategoryFlags, PlantHarvester.Factory plantHarvesterFactory)
: base(ammoCategoryFlags, plantHarvesterFactory)
Expand Down
1 change: 1 addition & 0 deletions src/Perpetuum/Perpetuum.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -384,6 +384,7 @@
<Compile Include="Services\Relics\RelicManagers\IRelicManager.cs" />
<Compile Include="Services\Relics\RelicManagers\OutpostRelicManager.cs" />
<Compile Include="Services\Relics\Relics\AbstractRelic.cs" />
<Compile Include="Services\Relics\Relics\ArenaRelic.cs" />
<Compile Include="Services\Relics\Relics\IRelic.cs" />
<Compile Include="Services\Relics\Relics\Relic.cs" />
<Compile Include="Services\Relics\RelicInfo.cs" />
Expand Down
10 changes: 6 additions & 4 deletions src/Perpetuum/Robots/RobotHelper.cs
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ public RobotHelper(UnitHelper unitHelper)

public Robot GetOrLoadRobotForCharacter(long robotEid, Character character)
{
var robot = GetRobot(robotEid);
Robot robot = GetRobot(robotEid);
if (robot == null)
{
robot = LoadRobotForCharacter(robotEid, character);
Expand All @@ -32,9 +32,11 @@ public Robot GetRobot(long robotEid)

public Robot LoadRobotForCharacter(long robotEid, Character character, bool checkOwner = false)
{
var robot = LoadRobot(robotEid);
Robot robot = LoadRobot(robotEid);
if (robot == null)
{
return null;
}

if (checkOwner)
{
Expand All @@ -47,14 +49,14 @@ public Robot LoadRobotForCharacter(long robotEid, Character character, bool chec

public Robot LoadRobot(long robotEid)
{
var robot = (Robot) _unitHelper.LoadUnit(robotEid);
Robot robot = (Robot)_unitHelper.LoadUnit(robotEid);
robot?.Initialize();
return robot;
}

public Robot LoadRobotOrThrow(long robotEid)
{
var robot = (Robot) _unitHelper.LoadUnitOrThrow(robotEid);
Robot robot = (Robot)_unitHelper.LoadUnitOrThrow(robotEid);
robot.Initialize();
return robot;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@ public TimeSpan GetTimeRemained()
{
using (_lock.Read(THREAD_TIMEOUT))
{
return _duration - _elapsed;
return !_eventStarted ? TimeSpan.Zero : _duration - _elapsed;
}
}

Expand Down
84 changes: 36 additions & 48 deletions src/Perpetuum/Services/Relics/RelicManagers/ZoneRelicManager.cs
Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@
using Perpetuum.Zones;
using Perpetuum.ExportedTypes;
using Perpetuum.Services.RiftSystem;
using Perpetuum.Zones;
using Perpetuum.Zones.Beams;
using Perpetuum.Zones.Intrusion;
using System;
using System.Collections.Generic;
using System.Linq;
using Perpetuum.Services.RiftSystem;
using System.Drawing;
using Perpetuum.ExportedTypes;
using Perpetuum.Zones.Beams;
using System.Linq;
using System.Threading;
using Perpetuum.Zones.Intrusion;

namespace Perpetuum.Services.Relics
{
Expand All @@ -17,9 +17,9 @@ public class ZoneRelicManager : AbstractRelicManager
private readonly TimeSpan RESPAWN_RANDOM_WINDOW = TimeSpan.FromHours(1);
private readonly TimeSpan _respawnRate = TimeSpan.FromHours(1.5);

private Random _random;
private readonly Random _random;

private IEnumerable<RelicSpawnInfo> _spawnInfos;
private readonly IEnumerable<RelicSpawnInfo> _spawnInfos;

//Beam Draw refresh
private readonly TimeSpan _relicRefreshRate = TimeSpan.FromSeconds(19.95);
Expand All @@ -29,26 +29,14 @@ public class ZoneRelicManager : AbstractRelicManager
private readonly RelicSpawnInfoRepository relicSpawnInfoRepository;

//Child RelicManagers
private IList<OutpostRelicManager> outpostRelicManagers = new List<OutpostRelicManager>();
private readonly IList<OutpostRelicManager> outpostRelicManagers = new List<OutpostRelicManager>();

private RiftSpawnPositionFinder _spawnPosFinder;
private readonly RiftSpawnPositionFinder _spawnPosFinder;

private IZone _zone;
protected override IZone Zone
{
get
{
return _zone;
}
}
private ReaderWriterLockSlim _lock;
protected override ReaderWriterLockSlim Lock
{
get
{
return _lock;
}
}
private readonly IZone _zone;
protected override IZone Zone => _zone;
private readonly ReaderWriterLockSlim _lock;
protected override ReaderWriterLockSlim Lock => _lock;

public ZoneRelicManager(IZone zone)
{
Expand All @@ -67,7 +55,7 @@ public ZoneRelicManager(IZone zone)
relicLootGenerator = new RelicLootGenerator();

//Get Zone Relic-Configuration data
var config = relicZoneConfigRepository.GetZoneConfig();
RelicZoneConfig config = relicZoneConfigRepository.GetZoneConfig();
_max_relics = config.GetMax();
_respawnRate = config.GetTimeSpan();
_respawnRandomized = RollNextSpawnTime();
Expand All @@ -78,20 +66,20 @@ public ZoneRelicManager(IZone zone)
public override void Start()
{
base.Start();
var outposts = _zone.Units.OfType<Outpost>().ToList();
foreach (var outpost in outposts)
List<Outpost> outposts = _zone.Units.OfType<Outpost>().ToList();
foreach (Outpost outpost in outposts)
{
outpostRelicManagers.Add(new OutpostRelicManager(outpost));
}
foreach (var childManagers in outpostRelicManagers)
foreach (OutpostRelicManager childManagers in outpostRelicManagers)
{
childManagers.Start();
}
}

public override void Stop()
{
foreach (var childManagers in outpostRelicManagers)
foreach (OutpostRelicManager childManagers in outpostRelicManagers)
{
childManagers.Stop();
}
Expand All @@ -101,7 +89,7 @@ public override void Stop()
public override void Update(TimeSpan time)
{
base.Update(time);
foreach (var childManagers in outpostRelicManagers)
foreach (OutpostRelicManager childManagers in outpostRelicManagers)
{
childManagers.Update(time);
}
Expand All @@ -114,23 +102,23 @@ protected override IRelic MakeRelic(RelicInfo info, Position position)

protected override TimeSpan RollNextSpawnTime()
{
var randomFactor = _random.NextDouble() - 0.5;
var minutesToAdd = RESPAWN_RANDOM_WINDOW.TotalMinutes * randomFactor;
double randomFactor = _random.NextDouble() - 0.5;
double minutesToAdd = RESPAWN_RANDOM_WINDOW.TotalMinutes * randomFactor;

return _respawnRate.Add(TimeSpan.FromMinutes(minutesToAdd));
}


protected override RelicInfo GetNextRelicType()
{
var spawnRates = _spawnInfos;
IEnumerable<RelicSpawnInfo> spawnRates = _spawnInfos;
double sumRate = spawnRates.Sum(r => r.GetRate());
double minRate = 0.0;
double chance = _random.NextDouble();
RelicInfo info = null;
foreach (var spawnRate in spawnRates)
foreach (RelicSpawnInfo spawnRate in spawnRates)
{
double rate = (double)spawnRate.GetRate() / sumRate;
double rate = spawnRate.GetRate() / sumRate;
double maxRate = rate + minRate;

if (minRate < chance && chance <= maxRate)
Expand All @@ -154,8 +142,8 @@ protected override Point FindRelicPosition(RelicInfo info)

protected override List<Dictionary<string, object>> DoGetRelicListDictionary()
{
var list = new List<Dictionary<string, object>>();
foreach (var childManagers in outpostRelicManagers)
List<Dictionary<string, object>> list = new List<Dictionary<string, object>>();
foreach (OutpostRelicManager childManagers in outpostRelicManagers)
{
list.AddMany(childManagers.GetRelicListDictionary());
}
Expand All @@ -165,11 +153,11 @@ protected override List<Dictionary<string, object>> DoGetRelicListDictionary()

protected override void RefreshBeam(IRelic relic)
{
var info = relic.GetRelicInfo();
var level = info.GetLevel();
var faction = info.GetFaction();
var position = relic.GetPosition();
var factionalBeamType = BeamType.orange_20sec;
RelicInfo info = relic.GetRelicInfo();
int level = info.GetLevel();
int faction = info.GetFaction();
Position position = relic.GetPosition();
BeamType factionalBeamType = BeamType.orange_20sec;
switch (faction)
{
case 0:
Expand All @@ -189,18 +177,18 @@ protected override void RefreshBeam(IRelic relic)
break;
}

var p = _zone.FixZ(position);
var beamBuilder = Beam.NewBuilder().WithType(BeamType.artifact_radar).WithTargetPosition(position)
Position p = _zone.FixZ(position);
BeamBuilder beamBuilder = Beam.NewBuilder().WithType(BeamType.artifact_radar).WithTargetPosition(position)
.WithState(BeamState.AlignToTerrain)
.WithDuration(_relicRefreshRate);
_zone.CreateBeam(beamBuilder);
beamBuilder = Beam.NewBuilder().WithType(BeamType.nature_effect).WithTargetPosition(position)
.WithState(BeamState.AlignToTerrain)
.WithDuration(_relicRefreshRate);
_zone.CreateBeam(beamBuilder);
for (var i = 0; i < level; i++)
for (int i = 0; i < level; i++)
{
beamBuilder = Beam.NewBuilder().WithType(factionalBeamType).WithTargetPosition(p.AddToZ(3.5 * i + 1.0))
beamBuilder = Beam.NewBuilder().WithType(factionalBeamType).WithTargetPosition(p.AddToZ((3.5 * i) + 1.0))
.WithState(BeamState.Hit)
.WithDuration(_relicRefreshRate);
_zone.CreateBeam(beamBuilder);
Expand Down
Loading

0 comments on commit 9c6f60b

Please sign in to comment.