Files
DanhengServer-OpenSource/GameServer/Game/Rogue/Buff/RogueBuffInstance.cs
2024-10-02 15:08:37 +08:00

129 lines
3.6 KiB
C#

using EggLink.DanhengServer.Data;
using EggLink.DanhengServer.Data.Custom;
using EggLink.DanhengServer.Data.Excel;
using EggLink.DanhengServer.Enums.Rogue;
using EggLink.DanhengServer.GameServer.Game.Battle;
using EggLink.DanhengServer.Proto;
namespace EggLink.DanhengServer.GameServer.Game.Rogue.Buff;
public class RogueBuffInstance(int buffId, int buffLevel)
{
public int BuffId { get; set; } = buffId;
public int BuffLevel { get; set; } = buffLevel;
public BaseRogueBuffExcel BuffExcel { get; set; } = GameData.RogueBuffData[buffId * 100 + buffLevel];
public int CurSp { get; set; } = 10000;
public int MaxSp { get; set; } = 10000;
public int EnhanceCost => 100 + ((int)BuffExcel.RogueBuffCategory - 1) * 30;
public void OnStartBattle(BattleInstance battle)
{
if (BuffExcel is RogueBuffExcel { BattleEventBuffType: RogueBuffAeonTypeEnum.BattleEventBuff })
{
GameData.RogueBattleEventData.TryGetValue(BuffExcel.RogueBuffType, out var battleEvent);
if (battleEvent == null) return;
battle.BattleEvents.Add(BuffId, new BattleEventInstance(battleEvent.BattleEventID, CurSp, MaxSp));
}
battle.Buffs.Add(new MazeBuff(BuffId, BuffLevel, -1)
{
WaveFlag = -1
});
}
public RogueBuff ToProto()
{
return new RogueBuff
{
BuffId = (uint)BuffId,
Level = (uint)BuffLevel
};
}
public RogueCommonBuff ToCommonProto()
{
return new RogueCommonBuff
{
BuffId = (uint)BuffId,
BuffLevel = (uint)BuffLevel
};
}
public RogueCommonActionResult ToResultProto(RogueCommonActionResultSourceType source)
{
return new RogueCommonActionResult
{
RogueAction = new RogueCommonActionResultData
{
GetBuffList = new RogueCommonBuff
{
BuffId = (uint)BuffId,
BuffLevel = (uint)BuffLevel
}
},
Source = source
};
}
public RogueCommonActionResult ToRemoveResultProto(RogueCommonActionResultSourceType source)
{
return new RogueCommonActionResult
{
RogueAction = new RogueCommonActionResultData
{
RemoveBuffList = new RogueCommonBuff
{
BuffId = (uint)BuffId,
BuffLevel = (uint)BuffLevel
}
},
Source = source
};
}
public RogueBuffEnhanceInfo ToEnhanceProto()
{
return new RogueBuffEnhanceInfo
{
BuffId = (uint)BuffId,
CostData = new ItemCostData
{
ItemList =
{
new ItemCost
{
PileItem = new PileItem
{
ItemId = 31,
ItemNum = (uint)EnhanceCost
}
}
}
}
};
}
public ChessRogueBuffEnhanceInfo ToChessEnhanceProto()
{
return new ChessRogueBuffEnhanceInfo
{
BuffId = (uint)BuffId,
CostData = new ItemCostData
{
ItemList =
{
new ItemCost
{
PileItem = new PileItem
{
ItemId = 31,
ItemNum = (uint)EnhanceCost
}
}
}
}
};
}
}