This commit is contained in:
AlessandroCH
2025-07-27 15:58:32 +02:00
parent fb63df9eb2
commit 0f2a3dade4
3 changed files with 12 additions and 5 deletions

View File

@@ -23,6 +23,7 @@ namespace Campofinale.Game.Entities
public int sceneNumId; public int sceneNumId;
public bool spawned = false; public bool spawned = false;
public bool defaultHide = false; public bool defaultHide = false;
public bool scriptSpawn = false;
public Entity() public Entity()
{ {

View File

@@ -412,7 +412,7 @@ namespace Campofinale.Game
if(e.spawned==false && (GetActiveScript(e.belongLevelScriptId) || e.belongLevelScriptId==0)) if(e.spawned==false && (GetActiveScript(e.belongLevelScriptId) || e.belongLevelScriptId==0))
{ {
if(currentAreaRange.IsObjectInside(e.Position)) if(currentAreaRange.IsObjectInside(e.Position) || sceneNumId==87)
if (!e.defaultHide) if (!e.defaultHide)
{ {
toSpawn.Add(e); toSpawn.Add(e);
@@ -435,7 +435,7 @@ namespace Campofinale.Game
List<ulong> toDespawn=new(); List<ulong> toDespawn=new();
foreach(Entity en in GetEntityExcludingChar().FindAll(e=> e.spawned==true)) foreach(Entity en in GetEntityExcludingChar().FindAll(e=> e.spawned==true))
{ {
if (!currentAreaRange.IsObjectInside(en.Position)) if (!currentAreaRange.IsObjectInside(en.Position) && en.scriptSpawn==false && sceneNumId != 87)
{ {
toDespawn.Add(en.guid); toDespawn.Add(en.guid);
en.spawned = false; en.spawned = false;
@@ -458,7 +458,7 @@ namespace Campofinale.Game
}); });
GetOwner().Send(new PacketScObjectEnterView(GetOwner(), GetEntityExcludingChar().FindAll(e => e.belongLevelScriptId == id))); GetOwner().Send(new PacketScObjectEnterView(GetOwner(), GetEntityExcludingChar().FindAll(e => e.belongLevelScriptId == id)));
} }
public void SpawnEnemy(ulong v) public void SpawnEnemy(ulong v, bool scriptSpawn=false)
{ {
LevelScene lv_scene = ResourceManager.GetLevelData(sceneNumId); LevelScene lv_scene = ResourceManager.GetLevelData(sceneNumId);
LevelEnemyData en = lv_scene.levelData.enemies.Find(e=>e.levelLogicId == v); LevelEnemyData en = lv_scene.levelData.enemies.Find(e=>e.levelLogicId == v);
@@ -468,11 +468,17 @@ namespace Campofinale.Game
{ {
type = en.entityType, type = en.entityType,
belongLevelScriptId = en.belongLevelScriptId, belongLevelScriptId = en.belongLevelScriptId,
levelLogicId = en.levelLogicId levelLogicId = en.levelLogicId,
scriptSpawn = scriptSpawn
}; };
entities.Add(entity); entities.Add(entity);
Logger.Print($"Enemy Id {v} found on scene {sceneNumId}:{lv_scene.mapIdStr}");
SpawnEntity(entity); SpawnEntity(entity);
} }
else
{
Logger.PrintWarn($"Enemy Id {v} not found on scene {sceneNumId}:{lv_scene.mapIdStr}");
}
} }
public void SpawnWaveEnemy(ulong spawnerId, int waveId) public void SpawnWaveEnemy(ulong spawnerId, int waveId)

View File

@@ -122,7 +122,7 @@ namespace Campofinale.Packets.Cs
case ScriptActionType.SpawnEnemy: case ScriptActionType.SpawnEnemy:
foreach (ulong id in action.valueUlong) foreach (ulong id in action.valueUlong)
{ {
player.sceneManager.GetCurScene().SpawnEnemy(id); player.sceneManager.GetCurScene().SpawnEnemy(id,true);
} }
break; break;