Merge branch 'test-stable' into community

This commit is contained in:
Enthusiast 2025-09-29 16:44:46 -03:00 committed by GitHub
commit 004ab7f20b
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 139 additions and 1 deletions

45
.github/workflows/github-ci.yml vendored Normal file
View File

@ -0,0 +1,45 @@
name: Build
on:
# Triggers the workflow on push or pull request events but only for the selected branches
push:
branches: [ test-stable, community ]
pull_request:
branches: [ test-stable, community ]
# Allows you to run this workflow manually from the Actions tab
workflow_dispatch:
# A workflow run is made up of one or more jobs that can run sequentially or in parallel
jobs:
build:
runs-on: ${{ matrix.os }}
continue-on-error: ${{ matrix.allow_failures }}
name: ${{ matrix.name }} / ${{ matrix.config }}
strategy:
matrix:
config: [Debug, Release]
include:
# for the matrix leg matching the os and version
- os: ubuntu-22.04
name: Ubuntu 22.04 (.Net 7.0)
toolchain: dotnet-sdk-7.0
allow_failures: true
# Steps represent a sequence of tasks that will be executed as part of the job
steps:
# Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it
- uses: actions/checkout@v3
- name: Install dependencies (apt)
if: runner.os == 'Linux'
run: |
wget https://packages.microsoft.com/config/ubuntu/22.04/packages-microsoft-prod.deb -O packages-microsoft-prod.deb
sudo dpkg -i packages-microsoft-prod.deb
rm packages-microsoft-prod.deb
sudo apt-get update && sudo apt-get install -y ${{ matrix.toolchain }}
- name: Build (dotnet)
run: |
dotnet restore src/Blizzless-D3.sln
dotnet msbuild src/Blizzless-D3.sln /t:Build /p:Configuration=${{ matrix.config }}

View File

@ -146,7 +146,8 @@ The command system allows you to get control of the game world if you have right
Check the [report form](docs/report-form.md) before submitting issue, this will help people save time!
# Development Roadmap DiIiS Emulator
# Development Roadmap DIII Emulator
### 1⃣ Rift / Greater Rift System
GR closure: ensure the Greater Rift closes automatically after 15 minutes.

View File

@ -0,0 +1,92 @@
using DiIiS_NA.Core.Logging;
using DiIiS_NA.GameServer.GSSystem.ActorSystem;
using DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations.Hirelings;
using DiIiS_NA.GameServer.GSSystem.GameSystem;
using DiIiS_NA.GameServer.GSSystem.PlayerSystem;
using DiIiS_NA.GameServer.MessageSystem;
using System.Linq;
using System;
using System.Collections.Generic;
using DiIiS_NA.LoginServer.AccountsSystem;
using DiIiS_NA.GameServer.GSSystem.QuestSystem.QuestEvents;
using DiIiS_NA.GameServer.Core.Types.Math;
using DiIiS_NA.Core.Helpers.Math;
using DiIiS_NA.GameServer.Core.Types.TagMap;
using DiIiS_NA.GameServer.MessageSystem.Message.Definitions.Animation;
using System.Threading.Tasks;
using DiIiS_NA.GameServer.MessageSystem.Message.Definitions.Base;
using DiIiS_NA.D3_GameServer.Core.Types.SNO;
namespace DiIiS_NA.GameServer.GSSystem.QuestSystem.QuestEvents.Implementations
{
class SpawnSkeletons : QuestEvent
{
//ActorID: 0x7A3100DD
//ZombieSkinny_A_LeahInn.acr (2050031837)
//ActorSNOId: 0x00031971:ZombieSkinny_A_LeahInn.acr
private static readonly Logger Logger = LogManager.CreateLogger();
public SpawnSkeletons()
: base(151124)
{
}
public override void Execute(MapSystem.World world)
{
if (world.Game.Empty) return;
//Logger.Debug("SpawnSkeletons event started");
Task.Delay(1000).ContinueWith(delegate
{
foreach (var plr in world.Game.Players.Values)
plr.InGameClient.SendMessage(new MessageSystem.Message.Definitions.Camera.CameraCriptedSequenceStartMessage() { Activate = true });
var SkeletonKing_Bridge = world.GetActorBySNO(ActorSno._trdun_skeletonking_bridge_active);
Task.Delay(1000).ContinueWith(delegate
{
foreach (var plr in world.Game.Players.Values)
plr.InGameClient.SendMessage(new MessageSystem.Message.Definitions.Camera.CameraFocusMessage() { ActorID = (int)SkeletonKing_Bridge.DynamicID(plr), Duration = 1f, Snap = false });
StartConversation(world, 17923);
SkeletonKing_Bridge.PlayAnimation(5, (AnimationSno)SkeletonKing_Bridge.AnimationSet.TagMapAnimDefault[AnimationSetKeys.Opening], 1f);
world.BroadcastIfRevealed(plr => new SetIdleAnimationMessage
{
ActorID = SkeletonKing_Bridge.DynamicID(plr),
AnimationSNO = AnimationSetKeys.Open.ID,
}, SkeletonKing_Bridge);
Task.Delay(3000).ContinueWith(delegate
{
foreach (var plr in world.Game.Players.Values)
{
plr.InGameClient.SendMessage(new BoolDataMessage(Opcodes.CameraTriggerFadeToBlackMessage) { Field0 = true });
plr.InGameClient.SendMessage(new SimpleMessage(Opcodes.CameraSriptedSequenceStopMessage) { });
}
});
});
});
var spawner = world.GetActorBySNO(ActorSno._trdun_rescuecainskelspawner);
while (spawner != null)
{
var monster = ActorSno._skeletonking_shield_skeleton;
world.SpawnMonster(monster, spawner.Position);
spawner.Destroy();
spawner = world.GetActorBySNO(ActorSno._trdun_rescuecainskelspawner);
}
}
private bool StartConversation(MapSystem.World world, Int32 conversationId)
{
foreach (var player in world.Players)
{
player.Value.Conversations.StartConversation(conversationId);
}
return true;
}
}
}