@@ -18,17 +18,25 @@ local function updateWaterPoolsSize()
18
18
end
19
19
20
20
local function loadMapEmpty ()
21
- if SoulWarQuest .ebbAndFlow .getZone ():countPlayers () > 0 then
22
- local players = SoulWarQuest .ebbAndFlow .getZone ():getPlayers ()
23
- for _ , player in ipairs (players ) do
24
- if player :getPosition ().z == 8 then
25
- if player :isInBoatSpot () then
26
- local teleportPosition = player :getPosition ()
27
- teleportPosition .z = 9
28
- player :teleportTo (teleportPosition )
29
- logger .trace (" Teleporting player to down." )
21
+ local playersInZone = SoulWarQuest .ebbAndFlow .getZone ():countPlayers ()
22
+ local monstersInZone = SoulWarQuest .ebbAndFlow .getZone ():countMonsters ()
23
+ if playersInZone > 0 or monstersInZone > 0 then
24
+ local creatures = SoulWarQuest .ebbAndFlow .getZone ():getCreatures ()
25
+ for _ , creature in ipairs (creatures ) do
26
+ local creatureMaster = creature :getMaster ()
27
+ local player = creature :getPlayer ()
28
+ if creature :isPlayer () or (creature :isMonster () and creatureMaster and creatureMaster :getPlayer ()) then
29
+ if creature :getPosition ().z == 8 then
30
+ if creature :isInBoatSpot () then
31
+ local teleportPosition = creature :getPosition ()
32
+ teleportPosition .z = 9
33
+ creature :teleportTo (teleportPosition )
34
+ logger .trace (" Teleporting player to down." )
35
+ end
36
+ if player then
37
+ player :sendCreatureAppear ()
38
+ end
30
39
end
31
- player :sendCreatureAppear ()
32
40
end
33
41
end
34
42
end
@@ -72,22 +80,30 @@ local function findNearestRoomPosition(playerPosition)
72
80
end
73
81
74
82
local function loadMapInundate ()
75
- if SoulWarQuest .ebbAndFlow .getZone ():countPlayers () > 0 then
76
- local players = SoulWarQuest .ebbAndFlow .getZone ():getPlayers ()
77
- for _ , player in ipairs (players ) do
78
- local playerPosition = player :getPosition ()
79
- if playerPosition .z == 9 then
80
- if player :isInBoatSpot () then
81
- local nearestCenterPosition = findNearestRoomPosition (playerPosition )
82
- player :teleportTo (nearestCenterPosition )
83
- logger .trace (" Teleporting player to the near center position room and updating tile." )
84
- else
85
- player :teleportTo (SoulWarQuest .ebbAndFlow .waitPosition )
86
- logger .trace (" Teleporting player to wait position and updating tile." )
83
+ local playersInZone = SoulWarQuest .ebbAndFlow .getZone ():countPlayers ()
84
+ local monstersInZone = SoulWarQuest .ebbAndFlow .getZone ():countMonsters ()
85
+ if playersInZone > 0 or monstersInZone > 0 then
86
+ local creatures = SoulWarQuest .ebbAndFlow .getZone ():getCreatures ()
87
+ for _ , creature in ipairs (creatures ) do
88
+ local creatureMaster = creature :getMaster ()
89
+ local player = creature :getPlayer ()
90
+ if creature :isPlayer () or (creature :isMonster () and creatureMaster and creatureMaster :getPlayer ()) then
91
+ local creaturePosition = creature :getPosition ()
92
+ if creaturePosition .z == 9 then
93
+ if creature :isInBoatSpot () then
94
+ local nearestCenterPosition = findNearestRoomPosition (creaturePosition )
95
+ creature :teleportTo (nearestCenterPosition )
96
+ logger .trace (" Teleporting player to the near center position room and updating tile." )
97
+ else
98
+ creature :teleportTo (SoulWarQuest .ebbAndFlow .waitPosition )
99
+ logger .trace (" Teleporting player to wait position and updating tile." )
100
+ end
101
+ creaturePosition :sendMagicEffect (CONST_ME_TELEPORT )
102
+ end
103
+ if player then
104
+ player :sendCreatureAppear ()
87
105
end
88
- playerPosition :sendMagicEffect (CONST_ME_TELEPORT )
89
106
end
90
- player :sendCreatureAppear ()
91
107
end
92
108
end
93
109
0 commit comments