def setIval(self, ival, start=False, offset=0): CannonballProjectile.setIval(self, ival, start, offset) if self.ammoSkillId == InventoryType.DefenseCannonTargetedShot: if self.target == None: taskMgr.doMethodLater(0.05, self.findTarget, self.uniqueName('findTarget')) return
def destroy(self): if self.model: self.model.clearPythonTag('DefenseAmmo') if taskMgr.hasTaskNamed(self.uniqueName('findTarget')): taskMgr.remove(self.uniqueName('findTarget')) if taskMgr.hasTaskNamed(self.uniqueName('updateTarget')): taskMgr.remove(self.uniqueName('updateTarget')) if taskMgr.hasTaskNamed(self.uniqueName('sinkFloatingAmmo')): taskMgr.remove(self.uniqueName('sinkFloatingAmmo')) if self.areaCollSphere and not self.areaCollSphere.isEmpty(): self.areaCollSphere.detachNode() CannonballProjectile.destroy(self)
def __init__(self, cr, ammoSkillId, event, buffs=[]): CannonballProjectile.__init__(self, cr, ammoSkillId, event, buffs) self.hitWater = False self.lockedPos = False self.singleEffect = None self.target = None self.getWorldPos = False self.areaCollSphere = None self.lastPos = None self.direction = None self.duration = 1.5 self.collisionRadiusScale = 1 self.collisionPosOffset = 50 self.hitByAmmoEvent = None
def getProjectile(self, ammoSkillId, projectileHitEvent, buffs = []): cannonball = CannonballProjectile(self.cr, ammoSkillId, projectileHitEvent, buffs) cannonball.reparentTo(render) cannonball.setHpr(self.hNode.getH(render), self.hNode.getP(render), 0) return cannonball