Concomitants partial support

This commit is contained in:
xeon 2024-02-17 23:09:49 +03:00
parent d733766909
commit ea0c2f95e6
2 changed files with 53 additions and 0 deletions

View file

@ -249,6 +249,8 @@ internal class CreatureController : Controller
_entitySystem.Create(entity);
entity.InitProps(_configManager.GetConfig<BasePropertyConfig>(entity.ConfigId)!);
CreateConcomitants(entity);
// Give weapon to entity
RoleInfoConfig roleConfig = _configManager.GetConfig<RoleInfoConfig>(entity.ConfigId)!;
WeaponConfig weaponConfig = _configManager.GetConfig<WeaponConfig>(roleConfig.InitWeaponItemId)!;
@ -258,6 +260,32 @@ internal class CreatureController : Controller
}
}
private void CreateConcomitants(PlayerEntity entity)
{
(int roleId, int summonConfigId) = entity.ConfigId switch
{
1302 => (5002, 10070301),
_ => (-1, -1)
};
if (roleId != -1)
{
PlayerEntity concomitant = _entityFactory.CreatePlayer(roleId, 0);
_entitySystem.Create(concomitant);
EntityConcomitantsComponent concomitants = entity.ComponentSystem.Get<EntityConcomitantsComponent>();
concomitants.CustomEntityIds.Clear();
concomitants.CustomEntityIds.Add(concomitant.Id);
EntitySummonerComponent summoner = concomitant.ComponentSystem.Create<EntitySummonerComponent>();
summoner.SummonerId = entity.Id;
summoner.SummonConfigId = summonConfigId;
summoner.SummonType = ESummonType.ConcomitantCustom;
summoner.PlayerId = _modelManager.Player.Id;
concomitant.InitProps(_configManager.GetConfig<BasePropertyConfig>(roleId)!);
}
}
private void CreateWorldEntities()
{
Vector playerPos = _modelManager.Player.Position;

View file

@ -0,0 +1,25 @@
using Protocol;
namespace GameServer.Systems.Entity.Component;
internal class EntitySummonerComponent : EntityComponentBase
{
public int SummonConfigId { get; set; }
public ESummonType SummonType { get; set; }
public long SummonerId { get; set; }
public int PlayerId { get; set; }
public int SummonSkillId { get; set; }
public override EntityComponentType Type => EntityComponentType.Summoner;
public override EntityComponentPb Pb => new()
{
SummonerComponent = new()
{
SummonCfgId = SummonConfigId,
Type = (int)SummonType,
SummonerId = SummonerId,
PlayerId = PlayerId,
SummonSkillId = SummonSkillId
}
};
}