-- hallo-ween.levelgen -- by fordcars function main() subscribe(Event.Tick) subscribe(Event.MsgReceived) spookDelay = 180000 numberOfSpookMessages = 100 numberOfSpookMessagesDisplayed = 0 spooking = false gameInfo = bf:getGameInfo() minXCoords = 0 minYCoords = 0 maxXCoords = 5000 maxYCoords = 3000 spookTime = 300 -- In seconds updateSpookDelay = 200 spooked = false -- Spooked passed evilZoneTeam = 1 evilZoneGeom = {{minXCoords, minYCoords}, {maxXCoords, minYCoord}, {maxXCoords, maxYCoords}, {minXCoords, maxYCoords}} evilItems = {} evilTextLength = 100 randomMessagesPlayerNameSymbol = "&&" randomMessages = {"Ey, &&! I love pizza", "I love pizza &&, that is why", "Hey &&, why was 6 afraid of 7, because 7 8 9!", "&&, yes.", "&&, absolutely.", "&&, I know, that is why I love pizza.", "So &&, do you love pizza?", "I hear && loves pizza.", "What is &&'s favorite pizza? Spookzza.", "What's 9 + 10?", "Nais", "I am LevelController", "&& is cool.", "&& is love. && is life.", "Hallo-ween!", "I love to spam.", "&& is awesome", "&& is spooky.", "Spook = &&"} numberOfRandomMessages = #randomMessages end function spook() spooking = true ruineLevel() end function ruineLevel() local currentItem = nil local firstTextCoords = 0 local secondTextCoords = 0 local allLineItems = {} allLineItems = bf:findAllObjects(ObjType.Line) for i,v in ipairs(allLineItems) do v:removeFromGame() end currentItem = GoalZone.new(getPoints(evilZoneGeom), evilZoneTeam) currentItem:setTeam(evilZoneTeam) -- This needs to be here, other it is neutral, hah! levelgen:addItem(currentItem) for i=0, 100 do currentItem = RepairItem.new(getRandomCoords()) addEvilItem(currentItem) end for i=0, 50 do firstTextCoords = getRandomCoords() secondTextCoords = point.new(firstTextCoords.x + evilTextLength, firstTextCoords.y) currentItem = TextItem.new() currentItem:setGeom({firstTextCoords, secondTextCoords}) currentItem:setText("SPOOK") addEvilItem(currentItem) end end function addEvilItem(itemToAdd) table.insert(evilItems, itemToAdd) levelgen:addItem(itemToAdd) end function getRandomCoords() return point.new(getRandomNumber(minXCoords, maxXCoords), getRandomNumber(minYCoords, maxYCoords)) end function getPoints(arrayOfArray) local pointsToReturn = {} for i,v in ipairs(arrayOfArray) do table.insert(pointsToReturn, point.new(v[1], v[2])) end return pointsToReturn end function sayRandomMessage(playerName) local randomMessage = getRandomNumber(1, numberOfRandomMessages) local messageWithPlayerName = string.gsub(randomMessages[randomMessage], randomMessagesPlayerNameSymbol, playerName) if(messageWithPlayerName~=nil) then globalMsg(messageWithPlayerName) end end function onMsgReceived(message, sender, isGlobal) if(isGlobal==true and sender~=nil) then if(spooked==true) then local senderName = sender:getName() sayRandomMessage(senderName) end end end function updateSpook() for i,v in ipairs(evilItems) do local firstTextCoords = 0 local secondTextCoords = 0 if(v:getObjType()==ObjType.TextItem) then firstTextCoords = getRandomCoords() secondTextCoords = point.new(firstTextCoords.x + evilTextLength, firstTextCoords.y) v:setGeom({firstTextCoords, secondTextCoords}) else v:setGeom(getRandomCoords()) end end end function onTick() if(spooked==false and gameInfo:getGameTimeRemaining()