From 832f4ab3eb55d5f0b08fccbc58c4b49df97ecbd0 Mon Sep 17 00:00:00 2001 From: xeon Date: Fri, 23 Feb 2024 15:50:16 +0300 Subject: [PATCH] Unlimited energy option in gameplay.json (unlimited ultimate) --- GameServer/Controllers/Combat/CombatManager.cs | 10 ++++++++++ GameServer/Controllers/CreatureController.cs | 16 +++++++++++++++- GameServer/Settings/GameplayFeatureSettings.cs | 1 + GameServer/gameplay.json | 3 ++- 4 files changed, 28 insertions(+), 2 deletions(-) diff --git a/GameServer/Controllers/Combat/CombatManager.cs b/GameServer/Controllers/Combat/CombatManager.cs index 0e65296..7d07ad4 100644 --- a/GameServer/Controllers/Combat/CombatManager.cs +++ b/GameServer/Controllers/Combat/CombatManager.cs @@ -33,6 +33,16 @@ internal class CombatManager _creatureController = creatureController; } + [CombatRequest(CombatRequestData.MessageOneofCase.CreateBulletRequest)] + public CombatResponseData OnCreateBulletRequest(CombatRequestContext context) + { + return new CombatResponseData + { + CombatCommon = context.Request.CombatCommon, + CreateBulletResponse = new() + }; + } + [CombatRequest(CombatRequestData.MessageOneofCase.DamageExecuteRequest)] public async Task OnDamageExecuteRequest(CombatRequestContext context) { diff --git a/GameServer/Controllers/CreatureController.cs b/GameServer/Controllers/CreatureController.cs index 66f182f..560e8fb 100644 --- a/GameServer/Controllers/CreatureController.cs +++ b/GameServer/Controllers/CreatureController.cs @@ -4,9 +4,11 @@ using GameServer.Extensions.Logic; using GameServer.Models; using GameServer.Network; using GameServer.Network.Messages; +using GameServer.Settings; using GameServer.Systems.Entity; using GameServer.Systems.Entity.Component; using GameServer.Systems.Event; +using Microsoft.Extensions.Options; using Protocol; namespace GameServer.Controllers; @@ -17,12 +19,15 @@ internal class CreatureController : Controller private readonly ModelManager _modelManager; private readonly ConfigManager _configManager; - public CreatureController(PlayerSession session, EntitySystem entitySystem, EntityFactory entityFactory, ModelManager modelManager, ConfigManager configManager) : base(session) + private readonly GameplayFeatureSettings _gameplayFeatures; + + public CreatureController(PlayerSession session, EntitySystem entitySystem, EntityFactory entityFactory, ModelManager modelManager, ConfigManager configManager, IOptions gameplayFeatures) : base(session) { _entitySystem = entitySystem; _entityFactory = entityFactory; _modelManager = modelManager; _configManager = configManager; + _gameplayFeatures = gameplayFeatures.Value; } public async Task JoinScene(int instanceId) @@ -257,6 +262,15 @@ internal class CreatureController : Controller entity.WeaponId = _modelManager.Inventory.GetEquippedWeapon(roleId)?.Id ?? 0; if (i == 0) _modelManager.Creature.PlayerEntityId = entity.Id; + + if (_gameplayFeatures.UnlimitedEnergy) + { + EntityAttributeComponent attr = entity.ComponentSystem.Get(); + attr.SetAttribute(EAttributeType.SpecialEnergy1Max, 0); + attr.SetAttribute(EAttributeType.SpecialEnergy2Max, 0); + attr.SetAttribute(EAttributeType.SpecialEnergy3Max, 0); + attr.SetAttribute(EAttributeType.SpecialEnergy4Max, 0); + } } } diff --git a/GameServer/Settings/GameplayFeatureSettings.cs b/GameServer/Settings/GameplayFeatureSettings.cs index 55a401a..3310c2d 100644 --- a/GameServer/Settings/GameplayFeatureSettings.cs +++ b/GameServer/Settings/GameplayFeatureSettings.cs @@ -2,4 +2,5 @@ internal class GameplayFeatureSettings { public bool TeleportByMapMark { get; set; } + public bool UnlimitedEnergy { get; set; } } diff --git a/GameServer/gameplay.json b/GameServer/gameplay.json index 4148415..4312214 100644 --- a/GameServer/gameplay.json +++ b/GameServer/gameplay.json @@ -12,6 +12,7 @@ } }, "Features": { - "TeleportByMapMark": true + "TeleportByMapMark": true, + "UnlimitedEnergy": true } } \ No newline at end of file