--empty Define Properties() home = {x = 0, y = 0, z = 0} owner = 0 moving = 0 end Trigger attach() -- starts the callback chain going -- we use a callback chain because then you can change the speed for the object SendTo(self, "wander", 1000) self.name = "Wild Meep" end Trigger fire_arrow() -- fire the fast moving projectile SendTo(self, 'create_projectile', 0, self, 'arrow') end Trigger create_projectile(launcherOwner, ammoName) -- Debug("Creating projectile") bulletX = launcherOwner.x + (launcherOwner.vx / 6) bulletY = launcherOwner.y + (launcherOwner.vy / 6) bullet = CreateObject(ammoName, bulletX, bulletY) bullet.facing = launcherOwner.facing bullet.speed = 8 bullet.vx = math.cos(math.rad(launcherOwner.facing)) bullet.vy = math.sin(math.rad(launcherOwner.facing)) bullet.lifetime = bullet.max_range end Trigger wander() -- wild meep behavior if(self.owner == 0) then -- Debug("Wandering.") playNoise = math.random(0,10) if(playNoise == 1) then --Debug("Play Noise %d", playNoise) PlaySoundRadius(self, 5, "0:12", 200, 0) elseif(playNoise == 2) then PlaySoundRadius(self, 5, "0:13", 200, 0) end -- first, we hunt objects = GetObjectsInRange(5) if(objects) then for index, target in ipairs(objects) do if target.type == "player" then self.speed = 4 xoffset = math.random(0, 4) - 2 yoffset = math.random(0, 4) - 2 PathToLocation(self, target.x + xoffset, target.y + yoffset) SendTo(self, "wander", 2500) return end end end xoffset = math.random(0, 6) - 3 yoffset = math.random(0, 6) - 3 self.speed = 3 PathToLocation(self, self.x+xoffset, self.y+yoffset) SendTo(self, "wander", 5000) -- idling pet meep elseif ((self.moving == 0) or ((self.x == self.home.x) and (self.y == self.home.y))) then -- Debug("Edgy.") xoffset = math.random(0, 2) - 1 yoffset = math.random(0, 2) - 1 self.speed = 1 PathToLocation(self, self.home.x+xoffset, self.home.y+yoffset) self.moving = 0 SendTo(self, "wander", 5000) -- attempt to wander while busy else SendTo(self, "wander", 5000) end end Trigger selectObject(selector) Debug("Attach Selected") SendTo(selector, "attachSelected", 0, self) PlaySoundRadius(self, 10, "0:8", 80, 0) end Trigger attempt_claim2(newOwner) request = {} request.url = "http://sanctuary.org/~ego/pets/claimPet.rhtml?player_id=" .. newOwner request.method = "GET" request.trigger = "claimResponse" request.body = "" request.headers = {} Debug("Request: %s", request.url) WebRequest(self, request) end Trigger claimResponse(response, body, userdata) Debug("Received Response - R:%d, B:%s", response, body) Debug("User - %s", userdata) tab, msg, line, column, index = XmlParse(body) if tab == nil then Debug("xml error [%s]%d:%d:%d ", msg, line, column, index) else -- do something with "tab" Debug("print %s %s %s %s", tab.tag, tab[1].tag, tab[1].attr.id, tab[1].attr.name) Debug("print %s %s %s", tab[2].tag, tab[2].attr.id, tab[2].attr.name) end end Trigger attempt_claim(newOwner) if((newOwner ~= nil) and (self.owner == 0)) then self.owner = newOwner Debug("%s claimed %s(%d)", GetObjectById(newOwner).name, self.type, self.id) self.home.x = self.x self.home.y = self.y self.name = string.format("%s's Meep", GetObjectById(self.owner).name) PlaySoundRadius(self, 10, "0:9", 50, 0) SendTo(GetObjectById(newOwner), "claim_success", 0, self) elseif((self.owner ~= 0) and (newOwner ~= self.owner))then AlertToUser(GetObjectById(newOwner), 1500, "That Meep belongs to %s", GetObjectById(self.owner).name) PlaySoundRadius(self, 5, "0:11", 50, 0) Debug("Already claimed") elseif((self.owner ~= 0) and (newOwner == self.owner)) then AlertToUser(GetObjectById(newOwner), 1500, "That Meep is Your Meep!") else Debug("ID is nil") end end Trigger go_wild() self.owner = 0 self.name = "Wild Meep" PlaySoundRadius(self, 10, "0:10", 200, 0) end Trigger request_move(requestor, x, y, z) if(requestor == self.owner) then Debug("%s requested %d move to %d, %d, %d", GetObjectById(requestor).name, self.id, x, y, z) self.speed = 4 PathToLocation(self, x, y) self.home.x = x self.home.y = y self.moving = 1 PlaySoundRadius(self, 10, "0:7", 200, 0) else Debug("Object doesn't belong to requestor") end end Trigger path_fail(x,y) self.speed=0 Debug("cannot pathfind to [%d, %d]", x, y) self.home.x = self.x self.home.y = self.y self.moving = 0 end Trigger path_success(x,y) Debug("pathfinding to [%d, %d]", x, y) end Trigger die() DestroyObject(self) end Trigger destroyed() -- target object, radius, soundId, volume, loop db = CreateObjectById("14785:102", self.x, self.y) end