diff --git a/data-otservbr-global/raids/darashia/tyrn.xml b/data-otservbr-global/raids/darashia/tyrn.xml deleted file mode 100644 index 21b39dda549..00000000000 --- a/data-otservbr-global/raids/darashia/tyrn.xml +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/data-otservbr-global/raids/roshamuul/mawhawk.xml b/data-otservbr-global/raids/roshamuul/mawhawk.xml deleted file mode 100644 index db48081d57a..00000000000 --- a/data-otservbr-global/raids/roshamuul/mawhawk.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/data-otservbr-global/scripts/globalevents/others/raids_schedule.lua b/data-otservbr-global/scripts/globalevents/others/raids_schedule.lua new file mode 100644 index 00000000000..be6070d857a --- /dev/null +++ b/data-otservbr-global/scripts/globalevents/others/raids_schedule.lua @@ -0,0 +1,53 @@ +local raidSchedule = { + ["Tuesday"] = { + ["16:00"] = { raidName = "Midnight Panther" }, + }, + ["Wednesday"] = { + ["12:00"] = { raidName = "Draptor" }, + }, + ["Thursday"] = { + ["19:00"] = { raidName = "Undead Cavebear" }, + }, + ["Friday"] = { + ["06:00"] = { raidName = "Titanica" }, + }, + ["Saturday"] = { + ["20:00"] = { raidName = "Draptor" }, + }, + ["Sunday"] = { + ["15:00"] = { raidName = "Midnight Panther" }, + ["13:00"] = { raidName = "Orc Backpack" }, + }, + ["31/10"] = { + ["16:00"] = { raidName = "Halloween Hare" }, + }, +} + +local spawnRaidsEvent = GlobalEvent("SpawnRaidsEvent") + +function spawnRaidsEvent.onThink(interval, lastExecution, thinkInterval) + local currentDayOfWeek, currentDate = os.date("%A"), getRealDate() + local raidsToSpawn = {} + + if raidSchedule[currentDayOfWeek] then + raidsToSpawn[#raidsToSpawn + 1] = raidSchedule[currentDayOfWeek] + end + + if raidSchedule[currentDate] then + raidsToSpawn[#raidsToSpawn + 1] = raidSchedule[currentDate] + end + + if #raidsToSpawn > 0 then + for i = 1, #raidsToSpawn do + local currentRaidSchedule = raidsToSpawn[i][getRealTime()] + if currentRaidSchedule and not currentRaidSchedule.alreadyExecuted then + Game.startRaid(currentRaidSchedule.raidName) + currentRaidSchedule.alreadyExecuted = true + end + end + end + return true +end + +spawnRaidsEvent:interval(60000) +spawnRaidsEvent:register() diff --git a/data-otservbr-global/scripts/globalevents/spawn/grimvale_respawn.lua b/data-otservbr-global/scripts/globalevents/spawn/grimvale_respawn.lua deleted file mode 100644 index aff3f6e3fa0..00000000000 --- a/data-otservbr-global/scripts/globalevents/spawn/grimvale_respawn.lua +++ /dev/null @@ -1,59 +0,0 @@ -local config = { - position = { fromPosition = Position(33330, 31670, 7), toPosition = Position(33350, 31690, 7) }, -} -local spawnDay = 13 -local currentDay = os.date("%d") -local monsters = {} - -function Game.createRandom(position) - local tile = Tile(position) - if not tile or Tile(position):getItemById(486) then - return false - end - - local ground = tile:getGround() - if not ground or ground:hasProperty(CONST_PROP_BLOCKSOLID) or tile:getTopCreature() then - return false - end - local monsterName = monsters[math.random(#monsters)] - local monster = Game.createMonster(monsterName, position) - if monster then - monster:setSpawnPosition() - monster:remove() - end - return true -end - -local grimvaleRespawn = GlobalEvent("grimvale respawn") -function grimvaleRespawn.onStartup() - if spawnDay == tonumber(currentDay) then - table.insert(monsters, "wereboar") - table.insert(monsters, "werebadger") - for x = config.position.fromPosition.x, config.position.toPosition.x do - for y = config.position.fromPosition.y, config.position.toPosition.y do - if math.random(1000) >= 983 then - if Game.createRandom(Position(x, y, 7)) then - return - end - end - end - end - else - table.insert(monsters, "bandit") - table.insert(monsters, "badger") - table.insert(monsters, "blue butterfly") - table.insert(monsters, "yellow butterfly") - for x = config.position.fromPosition.x, config.position.toPosition.x do - for y = config.position.fromPosition.y, config.position.toPosition.y do - if math.random(1000) >= 983 then - if Game.createRandom(Position(x, y, 7)) then - return - end - end - end - end - end - return true -end - -grimvaleRespawn:register() diff --git a/data-otservbr-global/scripts/globalevents/spawn/mawhawk.lua b/data-otservbr-global/scripts/globalevents/spawn/mawhawk.lua deleted file mode 100644 index e34657d211c..00000000000 --- a/data-otservbr-global/scripts/globalevents/spawn/mawhawk.lua +++ /dev/null @@ -1,18 +0,0 @@ -local config = { - monsterName = "Mawhawk", - bossPosition = Position(33703, 32461, 7), - centerPosition = Position(33703, 32461, 7), - rangeX = 50, - rangeY = 50, -} - -local mawhawk = GlobalEvent("mawhawk") -function mawhawk.onThink(interval, lastExecution) - if not checkBoss(config.centerPosition, config.rangeX, config.rangeY, config.monsterName, config.bossPosition) then - addEvent(Game.broadcastMessage, 150, "Beware! Mawhawk!", MESSAGE_EVENT_ADVANCE) - end - return true -end - -mawhawk:interval(10 * 60 * 60 * 1000) -- spawns every 10 hours -mawhawk:register() diff --git a/data-otservbr-global/scripts/globalevents/spawn/raids.lua b/data-otservbr-global/scripts/globalevents/spawn/raids.lua deleted file mode 100644 index 83d065349dd..00000000000 --- a/data-otservbr-global/scripts/globalevents/spawn/raids.lua +++ /dev/null @@ -1,65 +0,0 @@ -local raids = { - --Terça-Feira - ["Tuesday"] = { - ["16:00"] = { raidName = "Midnight Panther" }, - }, - - --Quarta-Feira - ["Wednesday"] = { - ["12:00"] = { raidName = "Draptor" }, - }, - - --Quinta-Feira - ["Thursday"] = { - ["19:00"] = { raidName = "Undead Cavebear" }, - }, - - --Sexta-feira - ["Friday"] = { - ["06:00"] = { raidName = "Titanica" }, - }, - - --Sábado - ["Saturday"] = { - ["20:00"] = { raidName = "Draptor" }, - }, - - --Domingo - ["Sunday"] = { - ["15:00"] = { raidName = "Midnight Panther" }, - ["13:00"] = { raidName = "Orc Backpack" }, - }, - - -- By date (Day/Month) - ["31/10"] = { - ["16:00"] = { raidName = "Halloween Hare" }, - }, -} - -local spawnRaids = GlobalEvent("spawn raids") -function spawnRaids.onThink(interval, lastExecution, thinkInterval) - local day, date = os.date("%A"), getRealDate() - - local raidDays = {} - if raids[day] then - raidDays[#raidDays + 1] = raids[day] - end - if raids[date] then - raidDays[#raidDays + 1] = raids[date] - end - if #raidDays == 0 then - return true - end - - for i = 1, #raidDays do - local settings = raidDays[i][getRealTime()] - if settings and not settings.alreadyExecuted then - Game.startRaid(settings.raidName) - settings.alreadyExecuted = true - end - end - return true -end - -spawnRaids:interval(60000) -spawnRaids:register() diff --git a/data-otservbr-global/scripts/globalevents/spawn/thawing_dragon_lord.lua b/data-otservbr-global/scripts/globalevents/spawn/thawing_dragon_lord.lua deleted file mode 100644 index eecbd29022b..00000000000 --- a/data-otservbr-global/scripts/globalevents/spawn/thawing_dragon_lord.lua +++ /dev/null @@ -1,17 +0,0 @@ -local config = { - monsterName = "Thawing Dragon Lord", - bossPosition = Position(33361, 31316, 5), - centerPosition = Position(33361, 31316, 5), - rangeX = 50, - rangeY = 50, -} - -local thawingDragonLord = GlobalEvent("thawing dragon lord") - -function thawingDragonLord.onThink(interval, lastExecution) - checkBoss(config.centerPosition, config.rangeX, config.rangeY, config.monsterName, config.bossPosition) - return true -end - -thawingDragonLord:interval(900000) -thawingDragonLord:register() diff --git a/data-otservbr-global/scripts/globalevents/spawn/tyrn.lua b/data-otservbr-global/scripts/globalevents/spawn/tyrn.lua deleted file mode 100644 index 47e7756f2ba..00000000000 --- a/data-otservbr-global/scripts/globalevents/spawn/tyrn.lua +++ /dev/null @@ -1,18 +0,0 @@ -local config = { - monsterName = "Tyrn", - bossPosition = Position(33056, 32393, 14), - centerPosition = Position(33056, 32393, 14), - rangeX = 50, - rangeY = 50, -} - -local tyrn = GlobalEvent("tyrn") -function tyrn.onThink(interval, lastExecution) - if not checkBoss(config.centerPosition, config.rangeX, config.rangeY, config.monsterName, config.bossPosition) then - addEvent(Game.broadcastMessage, 150, "Beware of Tyrn!", MESSAGE_EVENT_ADVANCE) - end - return true -end - -tyrn:interval(9 * 60 * 60 * 1000) -- spawns every 9 hours -tyrn:register() diff --git a/data-otservbr-global/scripts/world_changes/grimvale_respawn_event.lua b/data-otservbr-global/scripts/world_changes/grimvale_respawn_event.lua new file mode 100644 index 00000000000..b1cea5504e9 --- /dev/null +++ b/data-otservbr-global/scripts/world_changes/grimvale_respawn_event.lua @@ -0,0 +1,40 @@ +local grimvaleConfig = { + position = { fromPosition = Position(33330, 31670, 7), toPosition = Position(33350, 31690, 7) }, + spawnDay = 13, +} + +local function createRandomMonster(position, availableMonsters) + local tile = Tile(position) + if not tile or tile:getItemById(486) or tile:hasProperty(CONST_PROP_BLOCKSOLID) or tile:getTopCreature() then + return false + end + + local monsterName = availableMonsters[math.random(#availableMonsters)] + local monster = Game.createMonster(monsterName, position) + if monster then + monster:setSpawnPosition() + monster:remove() + end + return true +end + +local function spawnMonsters(monstersToSpawn) + for x = grimvaleConfig.position.fromPosition.x, grimvaleConfig.position.toPosition.x do + for y = grimvaleConfig.position.fromPosition.y, grimvaleConfig.position.toPosition.y do + if math.random(1000) >= 983 then + if createRandomMonster(Position(x, y, 7), monstersToSpawn) then + break + end + end + end + end +end + +local grimvaleRespawnEvent = GlobalEvent("GrimvaleRespawnEvent") + +function grimvaleRespawnEvent.onStartup() + spawnMonsters(grimvaleConfig.spawnDay == tonumber(os.date("%d")) and { "wereboar", "werebadger" } or { "bandit", "badger", "blue butterfly", "yellow butterfly" }) + return true +end + +grimvaleRespawnEvent:register()