2021-04-24 17:39:11 +08:00
|
|
|
|
using System;
|
2021-05-01 11:27:41 +08:00
|
|
|
|
using System.Collections.Generic;
|
|
|
|
|
using Cal.DataTable;
|
|
|
|
|
using ET.EventType;
|
2021-04-24 17:39:11 +08:00
|
|
|
|
|
|
|
|
|
namespace ET
|
|
|
|
|
{
|
|
|
|
|
[AttributeUsage(AttributeTargets.Method, AllowMultiple = false, Inherited = true)]
|
|
|
|
|
public class DataTableMethodAttribute: BaseAttribute
|
|
|
|
|
{
|
|
|
|
|
}
|
2021-05-01 11:27:41 +08:00
|
|
|
|
|
2021-04-24 17:39:11 +08:00
|
|
|
|
public static class GlobalMethod
|
|
|
|
|
{
|
|
|
|
|
[DataTableMethod]
|
2021-05-01 11:27:41 +08:00
|
|
|
|
public static async ETTask CommonDefeat(object arg)
|
|
|
|
|
{
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
CopyBattleArgs copyBattleArgs = arg.As<CopyBattleArgs>();
|
|
|
|
|
CopyBattle self = copyBattleArgs.copyBattle;
|
|
|
|
|
Team team = copyBattleArgs.team;
|
|
|
|
|
if (self == null)
|
|
|
|
|
{
|
|
|
|
|
Log.Error($"battle == null");
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
var leader = team.GetLeader();
|
|
|
|
|
if (leader.UnitType == UnitType.Player)
|
|
|
|
|
Log.Info($"{team.GetMemberName()} {self.battleType}失败了!");
|
|
|
|
|
await TimerComponent.Instance.WaitAsync(5500);
|
|
|
|
|
await BattleHelper.DefeatOption(self, team);
|
|
|
|
|
}
|
|
|
|
|
catch (Exception e)
|
|
|
|
|
{
|
|
|
|
|
Log.Error(e);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
[DataTableMethod]
|
|
|
|
|
public static async ETTask TrialCopyBattleVictory(object arg)
|
2021-04-24 17:39:11 +08:00
|
|
|
|
{
|
2021-05-01 11:27:41 +08:00
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
CopyBattleArgs copyBattleArgs = arg.As<CopyBattleArgs>();
|
|
|
|
|
CopyBattle self = copyBattleArgs.copyBattle;
|
|
|
|
|
Team team = copyBattleArgs.team;
|
|
|
|
|
Unit unit = MapUnitComponent.Instance.Get(team.LeaderId);
|
|
|
|
|
Log.Info(team.GetMemberName() + "试炼之地胜利了!");
|
|
|
|
|
UnitScene unitScene = unit.GetComponent<UnitScene>();
|
|
|
|
|
int mapId = unitScene.MapId;
|
|
|
|
|
await TimerComponent.Instance.WaitAsync(5000L);
|
|
|
|
|
MessageHelper.SendActor(unit, new M2C_BattleVictory { BattleType = (int) self.battleType });
|
|
|
|
|
await TimerComponent.Instance.WaitAsync(500L);
|
|
|
|
|
PlayerData data = unit.GetComponent<PlayerData>();
|
|
|
|
|
await data.UpdateTrialCopy((mapId / 100));
|
|
|
|
|
await BattleHelper.VictoryOption(self, team, self.configId);
|
|
|
|
|
}
|
|
|
|
|
catch (Exception e)
|
|
|
|
|
{
|
|
|
|
|
Log.Error(e);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
[DataTableMethod]
|
|
|
|
|
public static async ETTask MainStoryBattleVictory(object arg)
|
|
|
|
|
{
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
CopyBattleArgs copyBattleArgs = arg.As<CopyBattleArgs>();
|
|
|
|
|
CopyBattle self = copyBattleArgs.copyBattle;
|
|
|
|
|
Team team = copyBattleArgs.team;
|
|
|
|
|
LinkedList<Unit> teamList = team.GetUnits();
|
|
|
|
|
Unit unit = MapUnitComponent.Instance.Get(team.LeaderId);
|
|
|
|
|
|
|
|
|
|
Log.Info($"{team.GetMemberName()}主线胜利了!");
|
|
|
|
|
|
|
|
|
|
UnitScene unitScene = unit.GetComponent<UnitScene>();
|
|
|
|
|
int mapId = unitScene.MapId;
|
|
|
|
|
|
|
|
|
|
if (mapId % 100 == 10)
|
|
|
|
|
{
|
|
|
|
|
await TimerComponent.Instance.WaitAsync(6000);
|
|
|
|
|
foreach (Unit item in teamList)
|
|
|
|
|
{
|
|
|
|
|
MessageHelper.SendActor(item, new M2C_BattleVictory() { BattleType = (int) self.battleType });
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
await Game.EventSystem.Publish(new EventType.BackMainCity { unit = unit, isForce = true });
|
|
|
|
|
//!更新通过记录
|
|
|
|
|
foreach (Unit u in teamList)
|
|
|
|
|
{
|
|
|
|
|
PlayerData data = u.GetComponent<PlayerData>();
|
|
|
|
|
int dId = mapId / 100 - data.MainStoryRecordId;
|
|
|
|
|
switch (dId)
|
|
|
|
|
{
|
|
|
|
|
case 1:
|
|
|
|
|
data.MainStoryRecordId++;
|
|
|
|
|
break;
|
|
|
|
|
case > 1:
|
|
|
|
|
Log.Error($"【严重错误】玩家 Id={u.Id}通过记录增加数大于1 ");
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
await TimerComponent.Instance.WaitAsync(5500);
|
|
|
|
|
foreach (Unit item in teamList)
|
|
|
|
|
{
|
|
|
|
|
MessageHelper.SendActor(item, new M2C_BattleVictory() { BattleType = (int) self.battleType });
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
await TimerComponent.Instance.WaitAsync(500);
|
|
|
|
|
foreach (Unit item in teamList)
|
|
|
|
|
{
|
|
|
|
|
MessageHelper.SendActor(item, new M2C_StartupTransPoint() { MapId = mapId });
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
await BattleHelper.VictoryOption(self, team, self.configId);
|
|
|
|
|
}
|
|
|
|
|
catch (Exception e)
|
|
|
|
|
{
|
|
|
|
|
Log.Error(e);
|
|
|
|
|
}
|
2021-04-24 17:39:11 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
[DataTableMethod]
|
2021-05-01 11:27:41 +08:00
|
|
|
|
public static async ETTask MainStoryIdleBattleVictory(object arg)
|
2021-04-24 17:39:11 +08:00
|
|
|
|
{
|
2021-05-01 11:27:41 +08:00
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
CopyBattleArgs copyBattleArgs = arg.As<CopyBattleArgs>();
|
|
|
|
|
CopyBattle self = copyBattleArgs.copyBattle;
|
|
|
|
|
Team team = copyBattleArgs.team;
|
|
|
|
|
LinkedList<Unit> teamList = team.GetUnits();
|
|
|
|
|
Unit unit = MapUnitComponent.Instance.Get(team.LeaderId);
|
|
|
|
|
|
|
|
|
|
Log.Info($"{team.GetMemberName()}挂机战斗胜利了!");
|
|
|
|
|
|
|
|
|
|
await TimerComponent.Instance.WaitAsync(6000);
|
|
|
|
|
foreach (Unit item in teamList)
|
|
|
|
|
{
|
|
|
|
|
MessageHelper.SendActor(item, new M2C_BattleVictory() { BattleType = (int) self.battleType });
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//!结束挂机战斗
|
|
|
|
|
BattleIdleMap.Instance.Get(team.LeaderId)?.SetFightEnd();
|
|
|
|
|
await BattleHelper.VictoryOption(self, team, self.configId);
|
|
|
|
|
}
|
|
|
|
|
catch (Exception e)
|
|
|
|
|
{
|
|
|
|
|
Log.Error(e);
|
|
|
|
|
}
|
2021-04-24 17:39:11 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
[DataTableMethod]
|
2021-05-01 11:27:41 +08:00
|
|
|
|
public static async ETTask BossBattleVictory(object arg)
|
2021-04-24 17:39:11 +08:00
|
|
|
|
{
|
2021-05-01 11:27:41 +08:00
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
CopyBattleArgs copyBattleArgs = arg.As<CopyBattleArgs>();
|
|
|
|
|
CopyBattle self = copyBattleArgs.copyBattle;
|
|
|
|
|
Team team = copyBattleArgs.team;
|
|
|
|
|
LinkedList<Unit> teamList = team.GetUnits();
|
|
|
|
|
Unit unit = MapUnitComponent.Instance.Get(team.LeaderId);
|
|
|
|
|
|
|
|
|
|
UnitScene unitScene = unit.GetComponent<UnitScene>();
|
|
|
|
|
int mapId = unitScene.MapId;
|
|
|
|
|
Log.Info($"{team.GetMemberName()}Boss战斗胜利了!{unitScene.MapId}");
|
|
|
|
|
|
|
|
|
|
await TimerComponent.Instance.WaitAsync(5500);
|
|
|
|
|
foreach (Unit item in teamList)
|
|
|
|
|
{
|
|
|
|
|
MessageHelper.SendActor(item, new M2C_BattleVictory() { BattleType = (int) self.battleType });
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//!更新Boss状态
|
|
|
|
|
BossComponent.Instance.BossDead(team.GetMemberName(), mapId % 100);
|
|
|
|
|
await BattleHelper.VictoryOption(self, team, self.configId);
|
|
|
|
|
}
|
|
|
|
|
catch (Exception e)
|
|
|
|
|
{
|
|
|
|
|
Log.Error(e);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
[DataTableMethod]
|
|
|
|
|
public static async ETTask FamilyBossBattleVictory(object arg)
|
|
|
|
|
{
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
CopyBattleArgs copyBattleArgs = arg.As<CopyBattleArgs>();
|
|
|
|
|
CopyBattle self = copyBattleArgs.copyBattle;
|
|
|
|
|
Team team = copyBattleArgs.team;
|
|
|
|
|
var unit = team.GetLeader();
|
|
|
|
|
await SettleBossDamageData(self, unit);
|
|
|
|
|
LinkedList<Unit> teamList = team.GetUnits();
|
|
|
|
|
|
|
|
|
|
Log.Info($"{team.GetMemberName()}家族{self.configId}阶Boss战斗胜利了!");
|
|
|
|
|
|
|
|
|
|
await TimerComponent.Instance.WaitAsync(5500);
|
|
|
|
|
foreach (Unit item in teamList)
|
|
|
|
|
{
|
|
|
|
|
MessageHelper.SendActor(item, new M2C_BattleVictory() { BattleType = (int) self.battleType });
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
team.ChangeState(TeamState.None);
|
|
|
|
|
|
|
|
|
|
//!战斗结束事件(回血,奖励)
|
|
|
|
|
UnOrderMultiMapComponent<long, (int, int)> rewordMapComponent = UnOrderMultiMapComponent<long, (int, int)>.Create();
|
|
|
|
|
foreach (Unit u in teamList)
|
|
|
|
|
{
|
|
|
|
|
Game.EventSystem.Publish(new EventType.BattleEnd { unit = u, team = team }).Coroutine();
|
|
|
|
|
Game.EventSystem.Publish(new EventType.BattleEnd_AddHp { unit = u }).Coroutine();
|
|
|
|
|
u.Live();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//!移除不在线玩家
|
|
|
|
|
await TeamComponent.Instance.RemoveAllOffLineId(team);
|
|
|
|
|
}
|
|
|
|
|
catch (Exception e)
|
|
|
|
|
{
|
|
|
|
|
Log.Error(e);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private static async ETTask SettleBossDamageData(CopyBattle self, Unit leader)
|
|
|
|
|
{
|
|
|
|
|
User user = await UserComponent.Instance.Query(leader.Id);
|
|
|
|
|
FamilyBoss family = await FamilyBossComponent.instance.Query(user.Family);
|
|
|
|
|
FamilyBossConfig familyBossConfig = FamilyBossConfigCategory.Instance.Get(self.configId);
|
|
|
|
|
family.InsertDamageInfo((int) familyBossConfig.Id, self.bossDamageMap);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
[DataTableMethod]
|
|
|
|
|
public static async ETTask FamilyBossBattleDefeat(object arg)
|
|
|
|
|
{
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
CopyBattleArgs copyBattleArgs = arg.As<CopyBattleArgs>();
|
|
|
|
|
CopyBattle self = copyBattleArgs.copyBattle;
|
|
|
|
|
Team team = copyBattleArgs.team;
|
|
|
|
|
var leader = team.GetLeader();
|
|
|
|
|
await SettleBossDamageData(self, leader);
|
|
|
|
|
if (leader.UnitType == UnitType.Player)
|
|
|
|
|
Log.Info($"{team.GetMemberName()} {self.battleType}失败了!");
|
|
|
|
|
await TimerComponent.Instance.WaitAsync(5500);
|
|
|
|
|
await BattleHelper.DefeatOption(self, team);
|
|
|
|
|
}
|
|
|
|
|
catch (Exception e)
|
|
|
|
|
{
|
|
|
|
|
Log.Error(e);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
[DataTableMethod]
|
|
|
|
|
public static async ETTask ManulEquipBattleVictory(object arg)
|
|
|
|
|
{
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
CopyBattleArgs copyBattleArgs = arg.As<CopyBattleArgs>();
|
|
|
|
|
CopyBattle self = copyBattleArgs.copyBattle;
|
|
|
|
|
Team team = copyBattleArgs.team;
|
|
|
|
|
LinkedList<Unit> teamList = team.GetUnits();
|
|
|
|
|
Unit unit = MapUnitComponent.Instance.Get(team.LeaderId);
|
|
|
|
|
|
|
|
|
|
Log.Info($"{team.GetMemberName()}手工副本胜利了!");
|
|
|
|
|
UnitScene unitScene = unit.GetComponent<UnitScene>();
|
|
|
|
|
int mapId = unitScene.MapId;
|
|
|
|
|
//!触发通关任务事件
|
|
|
|
|
await TimerComponent.Instance.WaitAsync(5500);
|
|
|
|
|
foreach (Unit item in teamList)
|
|
|
|
|
{
|
|
|
|
|
MessageHelper.SendActor(item, new M2C_BattleVictory() { BattleType = (int) self.battleType });
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (MapHelper.GetMapType(mapId / 100) == UnitSceneType.ManulEquip)
|
|
|
|
|
{
|
|
|
|
|
int layer = mapId % 100;
|
|
|
|
|
if (layer == 4)
|
|
|
|
|
{
|
|
|
|
|
Game.EventSystem.Publish(new BackMainCity() { unit = unit, isForce = true });
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
Game.EventSystem.Publish(new ChangeMap() { unit = unit, mapId = mapId + 1 });
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
Log.Error($"{unit.Id.GetPlayerFormatName()} 位置错误 : {mapId}");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
await BattleHelper.VictoryOption(self, team, self.configId);
|
|
|
|
|
}
|
|
|
|
|
catch (Exception e)
|
|
|
|
|
{
|
|
|
|
|
Log.Error(e);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
[DataTableMethod]
|
|
|
|
|
public static async ETTask PKBattleVictory(object arg)
|
|
|
|
|
{
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
CopyBattleArgs copyBattleArgs = arg.As<CopyBattleArgs>();
|
|
|
|
|
CopyBattle self = copyBattleArgs.copyBattle;
|
|
|
|
|
Team team = copyBattleArgs.team;
|
|
|
|
|
LinkedList<Unit> teamList = team.GetUnits();
|
|
|
|
|
Unit unit = MapUnitComponent.Instance.Get(team.LeaderId);
|
|
|
|
|
|
|
|
|
|
Log.Info($"{team.GetMemberName()} PK胜利了!");
|
|
|
|
|
//!触发通关任务事件
|
|
|
|
|
await TimerComponent.Instance.WaitAsync(5500);
|
|
|
|
|
foreach (Unit item in teamList)
|
|
|
|
|
{
|
|
|
|
|
MessageHelper.SendActor(item, new M2C_BattleVictory() { BattleType = (int) self.battleType });
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
team.ChangeState(TeamState.None);
|
|
|
|
|
|
|
|
|
|
foreach (Unit u in teamList)
|
|
|
|
|
{
|
|
|
|
|
Game.EventSystem.Publish(new EventType.BattleEnd { unit = u, team = team }).Coroutine();
|
|
|
|
|
Game.EventSystem.Publish(new EventType.BattleEnd_AddHp { unit = u }).Coroutine();
|
|
|
|
|
u.Live();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//!移除不在线玩家
|
|
|
|
|
await TeamComponent.Instance.RemoveAllOffLineId(team);
|
|
|
|
|
}
|
|
|
|
|
catch (Exception e)
|
|
|
|
|
{
|
|
|
|
|
Log.Error(e);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
[DataTableMethod]
|
|
|
|
|
public static async ETTask PersonalPvpBattleVictory(object arg)
|
|
|
|
|
{
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
CopyBattleArgs copyBattleArgs = arg.As<CopyBattleArgs>();
|
|
|
|
|
CopyBattle self = copyBattleArgs.copyBattle;
|
|
|
|
|
Team team = copyBattleArgs.team;
|
|
|
|
|
LinkedList<Unit> teamList = team.GetUnits();
|
|
|
|
|
Unit unit = MapUnitComponent.Instance.Get(team.LeaderId);
|
|
|
|
|
|
|
|
|
|
Log.Info($"{team.GetMemberName()} 竞技场胜利了!");
|
|
|
|
|
//!触发通关任务事件
|
|
|
|
|
await TimerComponent.Instance.WaitAsync(5500);
|
|
|
|
|
foreach (Unit item in teamList)
|
|
|
|
|
{
|
|
|
|
|
MessageHelper.SendActor(item, new M2C_BattleVictory() { BattleType = (int) self.battleType });
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
foreach (Unit u in teamList)
|
|
|
|
|
{
|
|
|
|
|
Game.EventSystem.Publish(new EventType.BattleEnd { unit = u, team = team }).Coroutine();
|
|
|
|
|
u.Live();
|
|
|
|
|
CharacterHelper.RecoverUnit(u);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//!移除不在线玩家
|
|
|
|
|
await TeamComponent.Instance.RemoveAllOffLineId(team);
|
|
|
|
|
|
|
|
|
|
await PvpMap.inatance.SettleBattle(team, self.GetAnotherTeam(team));
|
|
|
|
|
}
|
|
|
|
|
catch (Exception e)
|
|
|
|
|
{
|
|
|
|
|
Log.Error(e);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
[DataTableMethod]
|
|
|
|
|
public static async ETTask PersonalPvpBattleDefeat(object arg)
|
|
|
|
|
{
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
CopyBattleArgs copyBattleArgs = arg.As<CopyBattleArgs>();
|
|
|
|
|
CopyBattle self = copyBattleArgs.copyBattle;
|
|
|
|
|
Team team = copyBattleArgs.team;
|
|
|
|
|
Log.Info($"{team.GetMemberName()} 竞技场失败了!");
|
|
|
|
|
LinkedList<Unit> teamList = team.GetUnits();
|
|
|
|
|
foreach (Unit u in teamList)
|
|
|
|
|
{
|
|
|
|
|
MessageHelper.SendActor(u, new M2C_BattleDefeat { BattleType = (int) self.battleType });
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
foreach (Unit u in teamList)
|
|
|
|
|
{
|
|
|
|
|
u.Live();
|
|
|
|
|
//!战斗结束事件(回血)
|
|
|
|
|
Game.EventSystem.Publish(new EventType.BattleEnd { unit = u, team = team }).Coroutine();
|
|
|
|
|
CharacterHelper.RecoverUnit(u);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//!移除不在线玩家
|
|
|
|
|
await TeamComponent.Instance.RemoveAllOffLineId(team);
|
|
|
|
|
}
|
|
|
|
|
catch (Exception e)
|
|
|
|
|
{
|
|
|
|
|
Log.Error(e);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
[DataTableMethod]
|
|
|
|
|
public static async ETTask BossBattleDefeat(object arg)
|
|
|
|
|
{
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
CopyBattleArgs copyBattleArgs = arg.As<CopyBattleArgs>();
|
|
|
|
|
CopyBattle self = copyBattleArgs.copyBattle;
|
|
|
|
|
Team team = copyBattleArgs.team;
|
|
|
|
|
if (self == null)
|
|
|
|
|
{
|
|
|
|
|
Log.Error($"battle == null");
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
var leader = team.GetLeader();
|
|
|
|
|
UnitScene unitScene = leader.GetComponent<UnitScene>();
|
|
|
|
|
int mapId = unitScene.MapId;
|
|
|
|
|
if (leader.UnitType == UnitType.Player)
|
|
|
|
|
Log.Info($"{team.GetMemberName()} {self.battleType}失败了!");
|
|
|
|
|
await TimerComponent.Instance.WaitAsync(5500);
|
|
|
|
|
await BattleHelper.DefeatOption(self, team);
|
|
|
|
|
//!重新刷新Boss
|
|
|
|
|
int mapLayer = mapId % 100;
|
|
|
|
|
BossComponent.Instance.ChangeState(mapLayer, BossComponent.BossState.Idle, true);
|
|
|
|
|
}
|
|
|
|
|
catch (Exception e)
|
|
|
|
|
{
|
|
|
|
|
Log.Error(e);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
[DataTableMethod]
|
|
|
|
|
public static async ETTask SpaceTravelBattleVictory(object arg)
|
|
|
|
|
{
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
CopyBattleArgs copyBattleArgs = arg.As<CopyBattleArgs>();
|
|
|
|
|
CopyBattle self = copyBattleArgs.copyBattle;
|
|
|
|
|
Team team = copyBattleArgs.team;
|
|
|
|
|
Unit unit = MapUnitComponent.Instance.Get(team.LeaderId);
|
|
|
|
|
Log.Info(team.GetMemberName() + $"{self.battleType}胜利了!");
|
|
|
|
|
UnitScene unitScene = unit.GetComponent<UnitScene>();
|
|
|
|
|
int mapId = unitScene.MapId;
|
2021-05-07 23:50:22 +08:00
|
|
|
|
if (mapId % 100 != 6)
|
|
|
|
|
{
|
|
|
|
|
LinkedList<Unit> teamList = team.GetUnits();
|
|
|
|
|
foreach (Unit u in teamList)
|
|
|
|
|
{
|
|
|
|
|
PlayerData _data = u.GetComponent<PlayerData>();
|
|
|
|
|
if (_data == null)
|
|
|
|
|
{
|
|
|
|
|
Log.Error($"data == null where id = {u?.Id}");
|
|
|
|
|
continue;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
_data.travelVoucher--;
|
|
|
|
|
}
|
|
|
|
|
}
|
2021-05-01 11:27:41 +08:00
|
|
|
|
await TimerComponent.Instance.WaitAsync(5000L);
|
2021-05-05 13:36:19 +08:00
|
|
|
|
foreach (Unit unit1 in team.GetUnits())
|
|
|
|
|
{
|
|
|
|
|
MessageHelper.SendActor(unit1, new M2C_BattleVictory { BattleType = (int) self.battleType });
|
|
|
|
|
}
|
2021-05-01 11:27:41 +08:00
|
|
|
|
await TimerComponent.Instance.WaitAsync(500L);
|
|
|
|
|
if (MapHelper.GetMapType(mapId / 100) == UnitSceneType.SpaceTravel)
|
|
|
|
|
{
|
|
|
|
|
int layer = mapId % 100;
|
|
|
|
|
if (layer == 5)
|
|
|
|
|
{
|
|
|
|
|
if (MathHelper.IsHit(0.01f))
|
|
|
|
|
{
|
|
|
|
|
Game.EventSystem.Publish(new ChangeMap() { unit = unit, mapId = mapId + 1 });
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
Game.EventSystem.Publish(new BackMainCity() { unit = unit, isForce = true });
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
else if (layer == 6)
|
|
|
|
|
{
|
|
|
|
|
Game.EventSystem.Publish(new BackMainCity() { unit = unit, isForce = true });
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
Game.EventSystem.Publish(new ChangeMap() { unit = unit, mapId = mapId + 1 });
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
Log.Error($"{unit.Id.GetPlayerFormatName()} 位置错误 : {mapId}");
|
2021-05-05 13:36:19 +08:00
|
|
|
|
Game.EventSystem.Publish(new BackMainCity() { unit = unit, isForce = true });
|
2021-05-01 11:27:41 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
await BattleHelper.VictoryOption(self, team, self.configId);
|
|
|
|
|
}
|
|
|
|
|
catch (Exception e)
|
|
|
|
|
{
|
|
|
|
|
Log.Error(e);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
[DataTableMethod]
|
|
|
|
|
public static async ETTask SpaceTravelBattleDefeat(object arg)
|
|
|
|
|
{
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
CopyBattleArgs copyBattleArgs = arg.As<CopyBattleArgs>();
|
|
|
|
|
CopyBattle self = copyBattleArgs.copyBattle;
|
|
|
|
|
Team team = copyBattleArgs.team;
|
|
|
|
|
if (self == null)
|
|
|
|
|
{
|
|
|
|
|
Log.Error($"battle == null");
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
var unit = team.GetLeader();
|
|
|
|
|
UnitScene unitScene = unit.GetComponent<UnitScene>();
|
|
|
|
|
int mapId = unitScene.MapId;
|
2021-05-07 23:50:22 +08:00
|
|
|
|
|
|
|
|
|
if (mapId % 100 != 6)
|
|
|
|
|
{
|
|
|
|
|
LinkedList<Unit> teamList = team.GetUnits();
|
|
|
|
|
foreach (Unit u in teamList)
|
|
|
|
|
{
|
|
|
|
|
PlayerData _data = u.GetComponent<PlayerData>();
|
|
|
|
|
if (_data == null)
|
|
|
|
|
{
|
|
|
|
|
Log.Error($"data == null where id = {u?.Id}");
|
|
|
|
|
continue;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
_data.travelVoucher--;
|
|
|
|
|
}
|
|
|
|
|
}
|
2021-05-01 11:27:41 +08:00
|
|
|
|
if (unit.UnitType == UnitType.Player)
|
|
|
|
|
Log.Info($"{team.GetMemberName()} {self.battleType}失败了!");
|
|
|
|
|
|
|
|
|
|
await TimerComponent.Instance.WaitAsync(5500);
|
|
|
|
|
await BattleHelper.DefeatOption(self, team);
|
|
|
|
|
}
|
|
|
|
|
catch (Exception e)
|
|
|
|
|
{
|
|
|
|
|
Log.Error(e);
|
|
|
|
|
}
|
2021-04-24 17:39:11 +08:00
|
|
|
|
}
|
2021-05-05 13:36:19 +08:00
|
|
|
|
|
|
|
|
|
[DataTableMethod]
|
|
|
|
|
public static async ETTask ActiveStarSoulCopy(object arg)
|
|
|
|
|
{
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
ActiveArgs args = arg.As<ActiveArgs>();
|
|
|
|
|
var unit = args.unit;
|
|
|
|
|
if (!unit.IsTeamLeader)
|
|
|
|
|
return;
|
|
|
|
|
if (unit.teamState != TeamState.None)
|
|
|
|
|
return;
|
|
|
|
|
string[] param = args.param;
|
|
|
|
|
byte type = byte.Parse(param[0]);
|
|
|
|
|
byte difficulty = byte.Parse(param[1]);
|
|
|
|
|
int sceneId = type switch
|
|
|
|
|
{
|
|
|
|
|
1 => Sys_SceneId.Scene_StarSoulCopyA,
|
|
|
|
|
2 => Sys_SceneId.Scene_StarSoulCopyB,
|
|
|
|
|
3 => Sys_SceneId.Scene_StarSoulCopyC,
|
|
|
|
|
4 => Sys_SceneId.Scene_StarSoulCopyD,
|
|
|
|
|
5 => Sys_SceneId.Scene_StarSoulCopyE,
|
|
|
|
|
_ => throw new ArgumentOutOfRangeException()
|
|
|
|
|
};
|
|
|
|
|
var config = unit.GetOrAddComponent<StarSoulCopyConfigComponent>();
|
|
|
|
|
config.type = type;
|
|
|
|
|
config.difficulty = difficulty;
|
|
|
|
|
Game.EventSystem.Publish(new ChangeMap() { unit = unit, mapId = sceneId * 100 + 1 });
|
|
|
|
|
}
|
|
|
|
|
catch (Exception e)
|
|
|
|
|
{
|
|
|
|
|
Log.Error(e);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
[DataTableMethod]
|
|
|
|
|
public static async ETTask ActiveIdleBattle(object arg)
|
|
|
|
|
{
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
Log.Info("ActiveIdleBattle");
|
|
|
|
|
}
|
|
|
|
|
catch (Exception e)
|
|
|
|
|
{
|
|
|
|
|
Log.Error(e);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
[DataTableMethod]
|
|
|
|
|
public static async ETTask StarSoulBattleVictory(object arg)
|
|
|
|
|
{
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
CopyBattleArgs copyBattleArgs = arg.As<CopyBattleArgs>();
|
|
|
|
|
CopyBattle self = copyBattleArgs.copyBattle;
|
|
|
|
|
Team team = copyBattleArgs.team;
|
|
|
|
|
Unit unit = MapUnitComponent.Instance.Get(team.LeaderId);
|
|
|
|
|
Log.Info(team.GetMemberName() + $"{self.battleType}胜利了!");
|
|
|
|
|
UnitScene unitScene = unit.GetComponent<UnitScene>();
|
|
|
|
|
int mapId = unitScene.MapId;
|
|
|
|
|
await TimerComponent.Instance.WaitAsync(5000L);
|
|
|
|
|
foreach (Unit unit1 in team.GetUnits())
|
|
|
|
|
{
|
|
|
|
|
MessageHelper.SendActor(unit1, new M2C_BattleVictory { BattleType = (int) self.battleType });
|
|
|
|
|
}
|
|
|
|
|
await TimerComponent.Instance.WaitAsync(500L);
|
|
|
|
|
if (MapHelper.GetMapType(mapId / 100) == UnitSceneType.StarSoulCopy)
|
|
|
|
|
{
|
|
|
|
|
int layer = mapId % 100;
|
|
|
|
|
if (layer == 3)
|
|
|
|
|
{
|
|
|
|
|
Game.EventSystem.Publish(new BackMainCity() { unit = unit, isForce = true });
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
Game.EventSystem.Publish(new ChangeMap() { unit = unit, mapId = mapId + 1 });
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
Log.Error($"{unit.Id.GetPlayerFormatName()} 位置错误 : {mapId}");
|
|
|
|
|
Game.EventSystem.Publish(new BackMainCity() { unit = unit, isForce = true });
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
await BattleHelper.VictoryOption(self, team, self.configId);
|
|
|
|
|
}
|
|
|
|
|
catch (Exception e)
|
|
|
|
|
{
|
|
|
|
|
Log.Error(e);
|
|
|
|
|
}
|
|
|
|
|
}
|
2021-04-24 17:39:11 +08:00
|
|
|
|
}
|
|
|
|
|
}
|