class FireFlower(Item): img=Img.imgstripx("Plants/FireFlower")[-1] def use(self,area,tpos,tr,p): if area.clear("Objects",tpos): area.spawn_new(War.Fireball,tpos,p.d) return True return False
class Boat(Vehicle): base = Img.imgstripx("Vehicles/Boat") occupied = Img.ColourImageManager(Img.hflip(base[1])) unocc = Img.hflip(base[0]) inverse_support = True @property def imgs(self): return self.occupied[self.player.col] if self.player else self.unocc
class Bomb(Object): layers = ["Objects"] imgs=Img.imgstripx("War/Bomb") t=99 def update(self, pos, area, events): self.t-=1 if not self.t: self.explode(area,pos,1) def explode(self,area,pos,tier): area.dobj(self, pos) area.create_exp(pos, 2, "Cross") return False @property def img(self): return self.imgs[4-self.t//20]
class EntangledPlacer(Item): imgs=Img.imgstripx("Tools/EntangledPlacer") img=imgs[0] singular = True stack_size = 1 phase=0 e1=None name="EntangledPlacer" def use(self,area,tpos,tr,p): for l in Boxes.EntangledBox1.layers: if not area.clear(l,tpos): return False if self.phase: area.spawn_new(Boxes.EntangledBox2,tpos,self.e1.area,self.e1.dummy) return True else: self.e1=Boxes.EntangledBox1(None) area.spawn(self.e1,tpos) self.phase=1 self.img=self.imgs[1]
class Plane(Vehicle): unocc = Img.imgstripx("Vehicles/Plane") occupied = Img.ColourImageManager(Img.imgstripx("Vehicles/PlaneOcc")) inverse_support = True state = "Taxi" TAKEOFF_SPEED = 8 TAXI_SPEED = 2 ACCELERATION = 0.05 DECELERATION = 0.1 POWER = 20 / 60 mspeed = 2 def __init__(self, c): super().__init__(c) self.fuel = MUI.FuelSlot() self.gui = MUI.MUI("SeaPlane", [self.fuel]) @property def imgs(self): return self.occupied[self.player.col] if self.player else self.unocc @property def img(self): return self.imgs[Vector.vdirs.index(self.lv)] def wrench(self, player, ppos, pos, area): player.enter_gui(self.gui) def update(self, pos, area, events): if self.literally_just_entered: self.literally_just_entered = False return if self.state == "Takeoff": if not self.fuel.get(self.POWER * 2): self.state = "Landing" elif self.mspeed < self.TAKEOFF_SPEED: self.mspeed += self.ACCELERATION self.aspeed = self.mspeed if not self.mprog: if not area.move(self, pos, self.lv): area.create_exp(pos, 1, "Cross", 1) elif not self.mprog: if area.move(self, pos, self.lv, re_layer=["Air"]): self.state = "Air" self.slayer = None else: area.create_exp(pos, 1, "Cross", 1) elif self.state == "Air": j = self.player.j buttons = j.get_buttons(events) if buttons[0] or not self.fuel.get(self.POWER): self.state = "Landing" self.slayer = "Tiles" if not self.mprog: for v in j.get_dirs(): if v != -self.lv: self.lv = v break if not area.move(self, pos, self.lv): area.create_exp(pos, 1, "Cross", 1) self.ldx = self.lv.x or self.ldx elif self.state == "Landing": if self.mspeed > self.TAXI_SPEED: self.mspeed -= self.DECELERATION self.aspeed = self.mspeed if not self.mprog: if not area.move(self, pos, self.lv, re_layer=["Objects"] if "Air" in self.layers else None): area.create_exp(pos, 1, "Cross", 1) else: self.state = "Taxi" elif self.player: j = self.player.j if not self.mprog: buttons = j.get_buttons(events) if buttons[1]: if area.move(self.player, pos, self.lv, True, 64): self.player.vehicle = None self.player = None self.team = None return elif buttons[0]: self.state = "Takeoff" for v in j.get_dirs(): self.lv = v if area.move(self, pos, v): break else: rs = j.get_rstick() if rs: self.lv = rs
class OneTwo(Overlay): imgs = Img.imgstripx("Overlays/OneTwo")