function Create(self) self.Target = nil; self.GoldTeam = nil; self.Price = 10; end --PresetMan:ReloadAllScripts() function Update(self) local newchute = nil; --Add nearby actors to the table self.AttachedActors = {} self.Vel.Y = 4; for actor in MovableMan.Actors do if actor.ID ~= self.ID and SceneMan:ShortestDistance(self.Pos,actor.Pos,SceneMan.SceneWrapsX).Magnitude < 40 then self.AttachedActors[#self.AttachedActors + 1] = actor; end end --If you buy more than one actor then: if #self.AttachedActors > 0 then --Find the closest one if #self.AttachedActors > 1 and self.Age < 2500 then local adist = 0 for i = 1 , #self.AttachedActors do --Pick the closest actor and mark him as the one this parachute carries if i == 1 then self.Target = self.AttachedActors[i]; adist = SceneMan:ShortestDistance(self.Pos,self.Target.Pos,SceneMan.SceneWrapsX).Magnitude; else local dist = SceneMan:ShortestDistance(self.Pos,self.AttachedActors[i].Pos,SceneMan.SceneWrapsX).Magnitude; if dist < adist then self.Target = self.AttachedActors[i]; adist = dist; end end self.GoldTeam = self.Target.Team --Make new parachutes for all the others, take away gold. if self.AttachedActors[i].ID ~= self.Target.ID and self.AttachedActors[i].Team == self.Target.Team then if SceneMan:ShortestDistance(self.Target.Pos,self.AttachedActors[i].Pos,SceneMan.SceneWrapsX).Magnitude < 50 then if self.AttachedActors[i].Pos.X - self.Target.Pos.X > 0 then self.AttachedActors[i].Pos.X = self.Target.Pos.X - 100; self.AttachedActors[i].Vel.X = -1; elseif self.AttachedActors[i].Pos.X - self.Target.Pos.X < 0 then self.AttachedActors[i].Pos.X = self.Target.Pos.X + 100; self.AttachedActors[i].Vel.X = 1; end end newchute = CreateACRocket("Parachute" , "Unitec.rte"); newchute.Pos = self.AttachedActors[i].Pos; MovableMan:AddActor(newchute); --ActivityMan:GetActivity():SetTeamFunds(self.GoldTeam:GetTeamFunds() - self.Price , self.GoldTeam); table.remove(self.AttachedActors , i); end end --Move the parachute when the actor attached to it moves elseif #self.AttachedActors == 1 then for i = 1 , #self.AttachedActors do self.Target = self.AttachedActors[i]; self.AttachedActors[i].Pos = self.Pos self.AttachedActors[i].Vel = self.Vel self.AttachedActors[i]:GetController():SetState(Controller.BODY_JUMP , false); self.AttachedActors[i]:GetController():SetState(Controller.BODY_JUMPSTART , false); self.AttachedActors[i]:GetController():SetState(Controller.BODY_CROUCH , false); self.AttachedActors[i]:GetController():SetState(Controller.MOVE_RIGHT , false); self.AttachedActors[i]:GetController():SetState(Controller.MOVE_LEFT , false); if self.AttachedActors[i]:GetController():IsState(Controller.HOLD_RIGHT) and self.Vel.X < 7 then self.Vel.X = self.Vel.X+.2; if self.RotAngle < .1 then self.RotAngle = self.RotAngle + .01 end elseif self.AttachedActors[i]:GetController():IsState(Controller.HOLD_LEFT) and self.Vel.X > -7 then self.Vel.X = self.Vel.X - .2; if self.RotAngle > -.1 then self.RotAngle = self.RotAngle - .01 end end end end end --Gib if no actor attached and refund money if #self.AttachedActors == 0 or self.Target == nil then ActivityMan:GetActivity():SetTeamFunds(3000 , 0); if self.GoldTeam then --ActivityMan:GetActivity():SetTeamFunds(self.GoldTeam:GetTeamFunds() - self.Price , self.GoldTeam); end self:GibThis(); end --Gib when it hits the ground if self:GetAltitude(0,2) < 50 then self:GibThis(); end end