Files
caliverse_server/GameServer/Contents/GameMode/Mode-Battle/Cheat/BattleCheat.cs
2025-05-01 07:20:41 +09:00

180 lines
6.1 KiB
C#

using Nettention.Proud;
using ServerCore;
using ServerBase;
using ServerCommon;
namespace GameServer;
[ChatCommandAttribute("battleinstanceinit", typeof(CheatBattleInstanceInit), AuthAdminLevelType.Developer,
AuthAdminLevelType.GmNormal, AuthAdminLevelType.GmSuper)]
public class CheatBattleInstanceInit : ChatCommandBase
{
public override async Task invoke(Player player, string token, string[] args)
{
Log.getLogger().info($"battleinstanceinit");
var server_logic = GameServerApp.getServerLogic();
var room_id = player.getCurrentInstanceRoomId();
if (room_id.Equals(string.Empty))
{
Log.getLogger().error($"cheat:battleinstanceinit.... this cheat only use in instance");
return;
}
var battle_instance_room = BattleInstanceManager.It.getBattleInstanceRoom(room_id);
if (battle_instance_room is null)
{
Log.getLogger().error($"cheat:battleinstanceinit.... battle_instance_room is null room_id : {room_id}");
return;
}
using (var releaser = await battle_instance_room.getAsyncLock())
{
var attribute = battle_instance_room.getEntityAttribute<BattleInstanceSnapshotAttribute>();
NullReferenceCheckHelper.throwIfNull(attribute, () => $"attribute is null !!!");
if (false == attribute.m_combat_pod_mode.m_round_state_type.Equals(BattleRoundStateType.RoundEndAll) &&
false == attribute.m_combat_pod_mode.m_round_state_type.Equals(BattleRoundStateType.Destroyed))
{
Log.getLogger().error($"cheat:battleinstanceinit.... this cheat only RoundEndAll room_id : {room_id}");
return;
}
var now = DateTimeHelper.Current;
battle_instance_room.setEventStartTime(now);
attribute.m_combat_pod_mode.m_round_state_type = BattleRoundStateType.Rounding;
attribute.m_combat_pod_mode.m_current_state_start_time = now;
attribute.m_combat_pod_mode.m_current_round = 1;
attribute.m_combat_pod_mode.m_charged_step = 0;
attribute.m_combat_pod_mode.m_rewarded_step = 0;
attribute.m_combat_pod_mode.m_pod_combat.setActive(now);
(Result result, var anchor_guid) =
BattleRoomHelper.getRandomCombatPodAnchorGuid(attribute, battle_instance_room);
if (result.isFail())
{
Log.getLogger().error("get Random pod combat anchor guid faile !!! ");
return;
}
attribute.m_combat_pod_mode.m_pod_combat.m_source_storage_anchor_guid = anchor_guid;
BattleRoomNotifyHelper.broadcast_GS2C_NTF_BATTLE_INSTANCE_STATE(battle_instance_room);
var update_action = battle_instance_room.getEntityAction<BattleInstanceUpdateAction>();
NullReferenceCheckHelper.throwIfNull(update_action, () => $"attribute is null !!!");
update_action.battleObjectStateInitAndNotify(battle_instance_room, attribute);
BattleRoomNotifyHelper.broadcast_GS2C_NTF_POD_COMBAT_STATE(battle_instance_room);
}
}
}
[ChatCommandAttribute("gamemodeoccupyhost", typeof(BattleHostOccupy), AuthAdminLevelType.Developer,
AuthAdminLevelType.GmNormal, AuthAdminLevelType.GmSuper)]
public class BattleHostOccupy : ChatCommandBase
{
public override async Task invoke(Player player, string token, string[] args)
{
//Log.getLogger().info($"battleinstanceinit");
var server_logic = GameServerApp.getServerLogic();
var room_id = player.getCurrentInstanceRoomId();
if (room_id.Equals(string.Empty))
{
Log.getLogger().error($"cheat:gamemodeoccupyhost.... this cheat only use in instance");
return;
}
//kihoon todo : 임시 분기 처리
//나중에 게임모드로 분리되면 그때 재작업
if (room_id.Contains("battle"))
{
var battle_instance_room = BattleInstanceManager.It.getBattleInstanceRoom(room_id);
if (battle_instance_room is null)
{
Log.getLogger().error($"cheat:gamemodeoccupyhost.... battle_instance_room is null room_id : {room_id}");
return;
}
using (var releaser = await battle_instance_room.getAsyncLock())
{
battle_instance_room.m_host_migrator.modifyHost(player.getUserGuid());
}
BattleRoomNotifyHelper.broadcast_GS2C_NTF_P2P_HOST_UPDATE(battle_instance_room.m_instance_room,
player.getUserGuid());
}
else if (room_id.Contains("1017101"))
{
var instance_room = InstanceRoomManager.Instance.getInstanceRoomByRoomId(room_id);
if (instance_room is null)
{
Log.getLogger().error($"cheat:gamemodeoccupyhost.... instance_room is null room_id : {room_id}");
return;
}
BattleRoomNotifyHelper.broadcast_GS2C_NTF_P2P_HOST_UPDATE(instance_room, player.getUserGuid());
}
}
}
//======================================================================================================================
//
//======================================================================================================================
[ChatCommandAttribute("gamehostmigration", typeof(BattleHostMigration), AuthAdminLevelType.Developer,
AuthAdminLevelType.GmNormal, AuthAdminLevelType.GmSuper)]
public class BattleHostMigration : ChatCommandBase
{
public override async Task invoke(Player player, string token, string[] args)
{
Log.getLogger().info($"gamehostmigration");
var server_logic = GameServerApp.getServerLogic();
var room_id = player.getCurrentInstanceRoomId();
if (room_id.Equals(string.Empty))
{
Log.getLogger().error($"cheat:gamehostmigration.... this cheat only use in instance");
return;
}
var battle_instance_room = BattleInstanceManager.It.getBattleInstanceRoom(room_id);
if (battle_instance_room is null)
{
Log.getLogger().error($"cheat:gamehostmigration.... battle_instance_room is null room_id : {room_id}");
return;
}
using var releaser = await battle_instance_room.getAsyncLock();
if (battle_instance_room.m_host_migrator is CommonHostMigrator common_hot_migrator)
{
common_hot_migrator.HostMigrationSystem.setIgnoreMigrationCondition(true);
common_hot_migrator.migrateCheck(true);
var super_peer_guid_id = common_hot_migrator.getHostUserGuid();
BattleRoomNotifyHelper.broadcast_GS2C_NTF_P2P_HOST_UPDATE(
battle_instance_room.m_instance_room, super_peer_guid_id);
common_hot_migrator.HostMigrationSystem.setIgnoreMigrationCondition(false);
}
else
{
Log.getLogger()
.error(
$"cheat:gamehostmigration.... battle_instance_room is not CommonHostMigrator room_id : {room_id}");
}
}
}