def projectileWeaponHit(self, pos): if self.tutorial: self.tutorial.cannonHitWreck(self) if base.cr.wantSpecialEffects: explosionEffect = ExplosionFlip.getEffect() if explosionEffect: explosionEffect.reparentTo(render) explosionEffect.setPos(self, pos) explosionEffect.setScale(0.80000000000000004) explosionEffect.play() smokeCloudEffect = SmokeCloud.getEffect() if smokeCloudEffect: smokeCloudEffect.reparentTo(render) smokeCloudEffect.setPos(self, pos) smokeCloudEffect.setScale(1.0) smokeCloudEffect.spriteScale = 1.0 smokeCloudEffect.radius = 7.0 smokeCloudEffect.play() shipSplintersAEffect = ShipSplintersA.getEffect() if shipSplintersAEffect: shipSplintersAEffect.reparentTo(render) shipSplintersAEffect.setPos(self, pos) shipSplintersAEffect.play()
def playDestroyEffects(self): if self.destroyedSfxs: base.playSfx(random.choice(self.destroyedSfxs), node=self, cutoff=200) self.destroySmoke = SmokeBlast.getEffect(unlimited=True) if self.destroySmoke: self.destroySmoke.reparentTo(self) self.destroySmoke.play() self.destroyExplosionLeft = ExplosionFlip.getEffect(unlimited=True) if self.destroyExplosionLeft: self.destroyExplosionLeft.reparentTo(self) self.destroyExplosionLeft.setPos(random.randint(-10, 0), 0, 2.5) self.destroyExplosionLeft.play() self.destroyExplosionRight = ExplosionFlip.getEffect(unlimited=True) if self.destroyExplosionRight: self.destroyExplosionRight.reparentTo(self) self.destroyExplosionRight.setPos(random.randint(0, 10), 0, 2.5) self.destroyExplosionRight.play()
def playDestroyEffects(self): if self.destroyedSfxs: base.playSfx(random.choice(self.destroyedSfxs), node = self, cutoff = 200) self.destroySmoke = SmokeBlast.getEffect(unlimited = True) if self.destroySmoke: self.destroySmoke.reparentTo(self) self.destroySmoke.play() self.destroyExplosionLeft = ExplosionFlip.getEffect(unlimited = True) if self.destroyExplosionLeft: self.destroyExplosionLeft.reparentTo(self) self.destroyExplosionLeft.setPos(random.randint(-10, 0), 0, 2.5) self.destroyExplosionLeft.play() self.destroyExplosionRight = ExplosionFlip.getEffect(unlimited = True) if self.destroyExplosionRight: self.destroyExplosionRight.reparentTo(self) self.destroyExplosionRight.setPos(random.randint(0, 10), 0, 2.5) self.destroyExplosionRight.play()
def startVFX(): offset = Vec3(0.0, 2.0, 5.0) root = av explosionEffect = ExplosionFlip.getEffect() if explosionEffect: explosionEffect.reparentTo(render) explosionEffect.setPos(root, offset) explosionEffect.setScale(0.5) explosionEffect.play() if self.creatureTypeEffect: self.creatureTypeEffect.stopLoop() self.creatureTypeEffect = None
def explode(self): base.playSfx(self.explosionSfx, node = self, cutoff = 200) if self.sparks: self.sparks.stopLoop() self.sparks = None self.prop.stash() self.explosionVfx = ExplosionFlip.getEffect(unlimited = True) if self.explosionVfx: self.explosionVfx.reparentTo(self) self.explosionVfx.setScale(1.5) self.explosionVfx.play() self.smokeVfx = SimpleSmokeCloud.getEffect(unlimited = True) if self.smokeVfx: self.smokeVfx.reparentTo(self) self.smokeVfx.setPos(0, 0, 1) self.smokeVfx.setEffectScale(1.0) self.smokeVfx.play() self.dustRingVfx = DustRing.getEffect(unlimited = True) if self.dustRingVfx: self.dustRingVfx.reparentTo(self) self.dustRingVfx.setPos(0, 0, -2) self.dustRingVfx.play() cameraShakerEffect = CameraShaker() cameraShakerEffect.reparentTo(self) cameraShakerEffect.shakeSpeed = 0.059999999999999998 cameraShakerEffect.shakePower = 4.0 cameraShakerEffect.scalePower = True cameraShakerEffect.numShakes = 2 cameraShakerEffect.scalePower = 1.0 cameraShakerEffect.play(120.0) self.splintersVfx = ShipSplintersA.getEffect(unlimited = True) if self.splintersVfx: self.splintersVfx.reparentTo(self) self.splintersVfx.setPos(0, 0, -2) self.splintersVfx.play() shockwaveRingEffect = ShockwaveRing.getEffect(unlimited = True) if shockwaveRingEffect: shockwaveRingEffect.reparentTo(self) shockwaveRingEffect.setPos(0, 0, -2) shockwaveRingEffect.size = 80 shockwaveRingEffect.play()
def explode(self): base.playSfx(self.explosionSfx, node=self, cutoff=200) if self.sparks: self.sparks.stopLoop() self.sparks = None self.model.stash() self.explosionVfx = ExplosionFlip.getEffect(unlimited=True) if self.explosionVfx: self.explosionVfx.reparentTo(self) self.explosionVfx.setScale(1.5) self.explosionVfx.play() self.smokeVfx = SimpleSmokeCloud.getEffect(unlimited=True) if self.smokeVfx: self.smokeVfx.reparentTo(self) self.smokeVfx.setPos(0, 0, 1) self.smokeVfx.setEffectScale(1.0) self.smokeVfx.play() self.dustRingVfx = DustRing.getEffect(unlimited=True) if self.dustRingVfx: self.dustRingVfx.reparentTo(self) self.dustRingVfx.setPos(0, 0, -2) self.dustRingVfx.play() cameraShakerEffect = CameraShaker() cameraShakerEffect.reparentTo(self) cameraShakerEffect.shakeSpeed = 0.059999999999999998 cameraShakerEffect.shakePower = 4.0 cameraShakerEffect.scalePower = True cameraShakerEffect.numShakes = 2 cameraShakerEffect.scalePower = 1.0 cameraShakerEffect.play(120.0) self.splintersVfx = ShipSplintersA.getEffect(unlimited=True) if self.splintersVfx: self.splintersVfx.reparentTo(self) self.splintersVfx.setPos(0, 0, -2) self.splintersVfx.play() shockwaveRingEffect = ShockwaveRing.getEffect(unlimited=True) if shockwaveRingEffect: shockwaveRingEffect.reparentTo(self) shockwaveRingEffect.setPos(0, 0, -2) shockwaveRingEffect.size = 80 shockwaveRingEffect.play()
def basicHitEffect(self, hitObject, pos, skillId, ammoSkillId): WeaponGlobals = WeaponGlobals import pirates.battle if self.cr: attacker = self.cr.doId2do.get(self.attackerId) aoeRadius = self.cr.battleMgr.getModifiedAttackAreaRadius( attacker, skillId, ammoSkillId) else: attacker = None aoeRadius = 0 if attacker: pass unlimited = bool(attacker.isLocal()) if config.GetBool('show-aoe-radius', 0): s = loader.loadModel('models/misc/smiley') s.reparentTo(render) s.setPos(hitObject, pos) s.setScale(aoeRadius) s.setTransparency(1) s.setColorScale(1.0, 0.5, 0.5, 0.40000000000000002) if ammoSkillId in [ InventoryType.CannonRoundShot, InventoryType.CannonChainShot, InventoryType.CannonBullet, InventoryType.CannonSkull, InventoryType.CannonBarShot, InventoryType.CannonFury, InventoryType.CannonFirebrand, InventoryType.CannonFlamingSkull, InventoryType.CannonThunderbolt ]: hitSfxNames = [ SoundGlobals.SFX_FX_WOOD_IMPACT_01, SoundGlobals.SFX_FX_WOOD_IMPACT_02, SoundGlobals.SFX_FX_WOOD_IMPACT_03, SoundGlobals.SFX_FX_WOOD_IMPACT_04, SoundGlobals.SFX_FX_WOOD_SHATTER_02, SoundGlobals.SFX_FX_WOOD_SHATTER_03 ] sfx = loadSfx(random.choice(hitSfxNames)) base.playSfx(sfx, node=hitObject, cutoff=1500) if base.options.getSpecialEffectsSetting( ) >= base.options.SpecialEffectsLow: explosionEffect = ExplosionFlip.getEffect(unlimited) if explosionEffect: explosionEffect.reparentTo(base.effectsRoot) explosionEffect.setPos(hitObject, pos) explosionEffect.setScale(0.80000000000000004) explosionEffect.play() if base.options.getSpecialEffectsSetting( ) >= base.options.SpecialEffectsMedium: smokeCloudEffect = SimpleSmokeCloud.getEffect(unlimited) if smokeCloudEffect: smokeCloudEffect.reparentTo(hitObject) smokeCloudEffect.setPos(hitObject, pos) smokeCloudEffect.setEffectScale(1.0) smokeCloudEffect.play() if localAvatar.ship and hitObject == localAvatar.ship: cameraShakerEffect = CameraShaker() cameraShakerEffect.wrtReparentTo(hitObject) cameraShakerEffect.setPos(hitObject, pos) cameraShakerEffect.shakeSpeed = 0.040000000000000001 cameraShakerEffect.shakePower = 6.0 cameraShakerEffect.numShakes = 2 cameraShakerEffect.scalePower = 1 cameraShakerEffect.play(120.0) if ammoSkillId == InventoryType.CannonExplosive: if base.options.getSpecialEffectsSetting( ) >= base.options.SpecialEffectsLow: effect = Explosion.getEffect(unlimited) if effect: effect.wrtReparentTo(hitObject) effect.setPos(hitObject, pos) effect.setEffectScale(1.0) effect.setEffectRadius(aoeRadius / 3.0) effect.play() if base.options.getSpecialEffectsSetting( ) >= base.options.SpecialEffectsMedium: for i in range(2): effect = FlamingDebris.getEffect(unlimited) if effect: effect.wrtReparentTo(base.effectsRoot) effect.setPos(hitObject, pos) effect.duration = 4 effect.velocityX = self.projVelocity[i][0] effect.velocityY = self.projVelocity[i][1] effect.play() continue if localAvatar.ship and hitObject == localAvatar.ship: cameraShakerEffect = CameraShaker() cameraShakerEffect.wrtReparentTo(hitObject) cameraShakerEffect.setPos(hitObject, pos) cameraShakerEffect.shakeSpeed = 0.040000000000000001 cameraShakerEffect.shakePower = 6.0 cameraShakerEffect.numShakes = 2 cameraShakerEffect.scalePower = 1 cameraShakerEffect.play(300.0) if base.options.getSpecialEffectsSetting( ) >= base.options.SpecialEffectsHigh: effect = FlamingDebris.getEffect(unlimited) if effect: effect.wrtReparentTo(base.effectsRoot) effect.setPos(hitObject, pos) effect.duration = 4 effect.velocityX = self.projVelocity[i][0] effect.velocityY = self.projVelocity[i][1] effect.play() if ammoSkillId == InventoryType.CannonThunderbolt: if base.options.getSpecialEffectsSetting( ) >= base.options.SpecialEffectsLow: effect = LightningStrike.getEffect(unlimited) if effect: effect.wrtReparentTo(base.effectsRoot) effect.setPos(hitObject, pos) effect.play() if base.options.getSpecialEffectsSetting( ) >= base.options.SpecialEffectsMedium: flashEffect = FlashEffect() flashEffect.wrtReparentTo(base.effectsRoot) flashEffect.setScale(600) flashEffect.setPos(hitObject, pos) flashEffect.effectColor = Vec4(0.5, 0.80000000000000004, 1, 1) flashEffect.fadeTime = 0.29999999999999999 flashEffect.play() if localAvatar.ship and hitObject == localAvatar.ship: cameraShakerEffect = CameraShaker() cameraShakerEffect.wrtReparentTo(hitObject) cameraShakerEffect.setPos(hitObject, pos) cameraShakerEffect.shakeSpeed = 0.059999999999999998 cameraShakerEffect.shakePower = 4.0 cameraShakerEffect.numShakes = 2 cameraShakerEffect.scalePower = 1 cameraShakerEffect.play(300.0) if base.options.getSpecialEffectsSetting( ) >= base.options.SpecialEffectsHigh: shipSplintersAEffect = ShipSplintersA.getEffect(unlimited) if shipSplintersAEffect: shipSplintersAEffect.wrtReparentTo(hitObject) shipSplintersAEffect.setPos(hitObject, pos) shipSplintersAEffect.play() elif ammoSkillId == InventoryType.CannonFury: flashEffect = FlashEffect() flashEffect.wrtReparentTo(base.effectsRoot) flashEffect.setScale(300) flashEffect.setPos(hitObject, pos) flashEffect.effectColor = Vec4(0.5, 0.80000000000000004, 1, 1) flashEffect.fadeTime = 0.25 flashEffect.play() elif ammoSkillId == InventoryType.GrenadeExplosion: explosionEffect = ExplosionFlip.getEffect(unlimited) if explosionEffect: explosionEffect.reparentTo(base.effectsRoot) explosionEffect.setPos(hitObject, pos) explosionEffect.setScale(1.0) explosionEffect.play() self.playSfx(ammoSkillId, explosionEffect) smokeCloudEffect = SmokeCloud.getEffect(unlimited) if smokeCloudEffect: smokeCloudEffect.reparentTo(hitObject) smokeCloudEffect.setPos(hitObject, pos) smokeCloudEffect.setScale(1.0) smokeCloudEffect.spriteScale = 1.0 smokeCloudEffect.radius = 7.0 smokeCloudEffect.play() if base.options.getSpecialEffectsSetting( ) >= base.options.SpecialEffectsMedium: shockwaveRingEffect = ShockwaveRing.getEffect(unlimited) if shockwaveRingEffect: shockwaveRingEffect.reparentTo(base.effectsRoot) shockwaveRingEffect.setPos(hitObject, pos) shockwaveRingEffect.size = aoeRadius * 4 shockwaveRingEffect.play() flashEffect = MuzzleFlash.getEffect(unlimited) if flashEffect: flashEffect.reparentTo(base.effectsRoot) flashEffect.flash.setScale(100) flashEffect.setPos(hitObject, pos) flashEffect.startCol = Vec4(0.69999999999999996, 0.69999999999999996, 0.69999999999999996, 1) flashEffect.fadeTime = 0.20000000000000001 flashEffect.play() cameraShakerEffect = CameraShaker() cameraShakerEffect.reparentTo(hitObject) cameraShakerEffect.setPos(hitObject, pos) cameraShakerEffect.shakeSpeed = 0.040000000000000001 cameraShakerEffect.shakePower = 6.0 cameraShakerEffect.numShakes = 2 cameraShakerEffect.scalePower = 1 cameraShakerEffect.play(80.0) if base.options.getSpecialEffectsSetting( ) >= base.options.SpecialEffectsHigh: rockShower = SmallRockShower.getEffect(unlimited) if rockShower: rockShower.reparentTo(hitObject) rockShower.setPos(hitObject, pos) rockShower.play() elif ammoSkillId == InventoryType.GrenadeShockBomb: explosionEffect = ExplosionFlip.getEffect(unlimited) if explosionEffect: explosionEffect.reparentTo(base.effectsRoot) explosionEffect.setPos(hitObject, pos) explosionEffect.setScale(1.0) explosionEffect.play() self.playSfx(ammoSkillId, explosionEffect) dustRingEffect = DustRing.getEffect(unlimited) if dustRingEffect: dustRingEffect.reparentTo(hitObject) dustRingEffect.setPos(hitObject, pos) dustRingEffect.play() if base.options.getSpecialEffectsSetting( ) >= base.options.SpecialEffectsMedium: shockwaveRingEffect = ShockwaveRing.getEffect(unlimited) if shockwaveRingEffect: shockwaveRingEffect.reparentTo(base.effectsRoot) shockwaveRingEffect.setPos(hitObject, pos) shockwaveRingEffect.size = aoeRadius * 4 shockwaveRingEffect.play() flashEffect = MuzzleFlash.getEffect(unlimited) if flashEffect: flashEffect.reparentTo(base.effectsRoot) flashEffect.flash.setScale(100) flashEffect.setPos(hitObject, pos) flashEffect.startCol = Vec4(0.69999999999999996, 0.69999999999999996, 0.69999999999999996, 1) flashEffect.fadeTime = 0.20000000000000001 flashEffect.play() cameraShakerEffect = CameraShaker() cameraShakerEffect.reparentTo(hitObject) cameraShakerEffect.setPos(hitObject, pos) cameraShakerEffect.shakeSpeed = 0.040000000000000001 cameraShakerEffect.shakePower = 3.0 cameraShakerEffect.numShakes = 2 cameraShakerEffect.scalePower = 1 cameraShakerEffect.play(80.0) elif ammoSkillId == InventoryType.GrenadeSiege: explosionEffect = ExplosionFlip.getEffect(unlimited) if explosionEffect: explosionEffect.reparentTo(base.effectsRoot) explosionEffect.setPos(hitObject, pos) explosionEffect.setScale(2.5) explosionEffect.play() self.playSfx(ammoSkillId, explosionEffect) smokePillarEffect = SmokePillar.getEffect(unlimited) if smokePillarEffect: smokePillarEffect.reparentTo(hitObject) smokePillarEffect.setPos(hitObject, pos) smokePillarEffect.setScale(1.0) smokePillarEffect.spriteScale = 1.0 smokePillarEffect.radius = 7.0 smokePillarEffect.play() if base.options.getSpecialEffectsSetting( ) >= base.options.SpecialEffectsMedium: dustRingEffect = DustRing.getEffect(unlimited) if dustRingEffect: dustRingEffect.reparentTo(hitObject) dustRingEffect.setPos(hitObject, pos) dustRingEffect.play() shockwaveRingEffect = ShockwaveRing.getEffect() if shockwaveRingEffect: shockwaveRingEffect.reparentTo(base.effectsRoot) shockwaveRingEffect.setPos(hitObject, pos) shockwaveRingEffect.size = aoeRadius * 4 shockwaveRingEffect.play() cameraShakerEffect = CameraShaker() cameraShakerEffect.wrtReparentTo(hitObject) cameraShakerEffect.setPos(hitObject, pos) cameraShakerEffect.shakeSpeed = 0.059999999999999998 cameraShakerEffect.shakePower = 4.0 cameraShakerEffect.numShakes = 2 cameraShakerEffect.scalePower = 1 cameraShakerEffect.play(80.0) if base.options.getSpecialEffectsSetting( ) >= base.options.SpecialEffectsHigh: shipSplintersAEffect = ShipSplintersA.getEffect(unlimited) if shipSplintersAEffect: shipSplintersAEffect.reparentTo(hitObject) shipSplintersAEffect.setPos(hitObject, pos) shipSplintersAEffect.play() for i in range(random.randint(3, 6)): debrisEffect = RockDebris.getEffect(unlimited) if debrisEffect: debrisEffect.reparentTo(base.effectsRoot) debrisEffect.setPos(hitObject, pos) debrisEffect.offsetEndPlaneZFrom(hitObject.getZ()) debrisEffect.debris.setScale(0.80000000000000004) debrisEffect.radiusDist = 30 debrisEffect.minHeight = 30 debrisEffect.maxHeight = 120 if debrisEffect.testTrajectory(): debrisEffect.play() else: debrisEffect.cleanUpEffect() debrisEffect.testTrajectory() flashEffect = MuzzleFlash.getEffect(unlimited) if flashEffect: flashEffect.reparentTo(base.effectsRoot) flashEffect.flash.setScale(200) flashEffect.setPos(hitObject, pos) flashEffect.startCol = Vec4(0.69999999999999996, 0.69999999999999996, 0.69999999999999996, 1) flashEffect.fadeTime = 0.20000000000000001 flashEffect.play() elif ammoSkillId == InventoryType.GrenadeFireBomb: fireEffect = Fire.getEffect(unlimited) if fireEffect: fireEffect.wrtReparentTo(base.effectsRoot) fireEffect.setPos(hitObject, pos + Vec3(0, 0, -1.5)) fireEffect.setScale(Vec3(0.75, 0.75, 0.75)) fireEffect.duration = 2.5 fireEffect.play() flashEffect = MuzzleFlash.getEffect(unlimited) if flashEffect: flashEffect.wrtReparentTo(base.effectsRoot) flashEffect.flash.setScale(100) flashEffect.setPos(hitObject, pos) flashEffect.startCol = Vec4(0.69999999999999996, 0.69999999999999996, 0.69999999999999996, 1) flashEffect.fadeTime = 0.20000000000000001 flashEffect.play() self.playSfx(ammoSkillId, flashEffect) if base.options.getSpecialEffectsSetting( ) >= base.options.SpecialEffectsMedium: shockwaveRingEffect = ShockwaveRing.getEffect(unlimited) if shockwaveRingEffect: shockwaveRingEffect.wrtReparentTo(base.effectsRoot) shockwaveRingEffect.setPos(hitObject, pos) shockwaveRingEffect.size = aoeRadius * 4 shockwaveRingEffect.play() cameraShakerEffect = CameraShaker() cameraShakerEffect.wrtReparentTo(hitObject) cameraShakerEffect.setPos(hitObject, pos) cameraShakerEffect.shakeSpeed = 0.040000000000000001 cameraShakerEffect.shakePower = 2.0 cameraShakerEffect.numShakes = 2 cameraShakerEffect.scalePower = 1 cameraShakerEffect.play(80.0) if base.options.getSpecialEffectsSetting( ) >= base.options.SpecialEffectsHigh: blackSmokeEffect = LightSmoke.getEffect(unlimited) if blackSmokeEffect: blackSmokeEffect.wrtReparentTo(base.effectsRoot) blackSmokeEffect.setPos(hitObject, pos) blackSmokeEffect.duration = 4.0 blackSmokeEffect.play() elif ammoSkillId == InventoryType.GrenadeSmokeCloud: explosionEffect = ExplosionFlip.getEffect(unlimited) if explosionEffect: explosionEffect.reparentTo(base.effectsRoot) explosionEffect.setPos(hitObject, pos) explosionEffect.setScale(1.0) explosionEffect.play() self.playSfx(ammoSkillId, explosionEffect) smokeCloudEffect = SmokeBomb.getEffect(unlimited) if smokeCloudEffect: smokeCloudEffect.reparentTo(hitObject) smokeCloudEffect.setPos(hitObject, pos) smokeCloudEffect.radius = aoeRadius / 1.5 smokeCloudEffect.play() self.playSfx(ammoSkillId, smokeCloudEffect) if base.options.getSpecialEffectsSetting( ) >= base.options.SpecialEffectsMedium: shockwaveRingEffect = ShockwaveRing.getEffect(unlimited) if shockwaveRingEffect: shockwaveRingEffect.wrtReparentTo(base.effectsRoot) shockwaveRingEffect.setPos(hitObject, pos) shockwaveRingEffect.size = aoeRadius * 4 shockwaveRingEffect.play() cameraShakerEffect = CameraShaker() cameraShakerEffect.wrtReparentTo(hitObject) cameraShakerEffect.setPos(hitObject, pos) cameraShakerEffect.shakeSpeed = 0.040000000000000001 cameraShakerEffect.shakePower = 2.0 cameraShakerEffect.numShakes = 2 cameraShakerEffect.scalePower = 1 cameraShakerEffect.play(80.0)
def basicHitEffect(self, hitObject, pos, skillId, ammoSkillId): from pirates.battle import WeaponGlobals if self.cr: attacker = self.cr.doId2do.get(self.attackerId) aoeRadius = self.cr.battleMgr.getModifiedAttackAreaRadius( attacker, skillId, ammoSkillId) else: attacker = None aoeRadius = 0 unlimited = bool(attacker and attacker.isLocal()) if config.GetBool('show-aoe-radius', 0): s = loader.loadModel('models/misc/smiley') s.reparentTo(render) s.setPos(hitObject, pos) s.setScale(aoeRadius) s.setTransparency(1) s.setColorScale(1.0, 0.5, 0.5, 0.4) if ammoSkillId in [ InventoryType.DefenseCannonRoundShot, InventoryType.DefenseCannonHotShot, InventoryType.DefenseCannonBomb, InventoryType.DefenseCannonScatterShot, InventoryType.DefenseCannonPowderKeg, InventoryType.DefenseCannonMine, InventoryType.DefenseCannonTargetedShot ]: if base.options.getSpecialEffectsSetting( ) >= base.options.SpecialEffectsLow: explosionEffect = ExplosionFlip.getEffect(unlimited) if explosionEffect: explosionEffect.reparentTo(base.effectsRoot) self.setEffectPos(explosionEffect, hitObject, pos) explosionEffect.setScale(0.8) explosionEffect.play() if base.options.getSpecialEffectsSetting( ) >= base.options.SpecialEffectsMedium: smokeCloudEffect = SimpleSmokeCloud.getEffect(unlimited) if smokeCloudEffect: smokeCloudEffect.reparentTo(hitObject) self.setEffectPos(smokeCloudEffect, hitObject, pos) smokeCloudEffect.setEffectScale(1.0) smokeCloudEffect.play() if localAvatar.ship and hitObject == localAvatar.ship: cameraShakerEffect = CameraShaker() cameraShakerEffect.wrtReparentTo(hitObject) cameraShakerEffect.setPos(hitObject, pos) cameraShakerEffect.shakeSpeed = 0.04 cameraShakerEffect.shakePower = 6.0 cameraShakerEffect.numShakes = 2 cameraShakerEffect.scalePower = 1 cameraShakerEffect.play(120.0) if ammoSkillId in [ InventoryType.DefenseCannonBomb, InventoryType.DefenseCannonMineInWater ]: if base.options.getSpecialEffectsSetting( ) >= base.options.SpecialEffectsLow: effect = Explosion.getEffect(unlimited) if effect: effect.wrtReparentTo(hitObject) self.setEffectPos(effect, hitObject, pos) effect.setEffectScale(1.0) effect.setEffectRadius(aoeRadius / 3.0) effect.play() if base.options.getSpecialEffectsSetting( ) >= base.options.SpecialEffectsMedium: for i in range(2): effect = FlamingDebris.getEffect(unlimited) if effect: effect.wrtReparentTo(base.effectsRoot) self.setEffectPos(effect, hitObject, pos) effect.duration = 4 effect.velocityX = self.projVelocity[i][0] effect.velocityY = self.projVelocity[i][1] effect.play() if localAvatar.ship and hitObject == localAvatar.ship: cameraShakerEffect = CameraShaker() cameraShakerEffect.wrtReparentTo(hitObject) cameraShakerEffect.setPos(hitObject, pos) cameraShakerEffect.shakeSpeed = 0.04 cameraShakerEffect.shakePower = 6.0 cameraShakerEffect.numShakes = 2 cameraShakerEffect.scalePower = 1 cameraShakerEffect.play(300.0) if base.options.getSpecialEffectsSetting( ) >= base.options.SpecialEffectsHigh: effect = FlamingDebris.getEffect(unlimited) if effect: effect.wrtReparentTo(base.effectsRoot) self.setEffectPos(effect, hitObject, pos) effect.duration = 4 effect.velocityX = self.projVelocity[i][0] effect.velocityY = self.projVelocity[i][1] effect.play() if ammoSkillId == InventoryType.DefenseCannonFireStorm: if base.options.getSpecialEffectsSetting( ) >= base.options.SpecialEffectsLow: for i in range(2): effect = FlamingDebris.getEffect(unlimited) if effect: effect.wrtReparentTo(base.effectsRoot) self.setEffectPos(effect, hitObject, pos) effect.duration = 4 effect.velocityX = self.projVelocity[i][ 0] * random.choice([-1, 1]) effect.velocityY = self.projVelocity[i][ 1] * random.choice([-1, 1]) effect.play() if base.options.getSpecialEffectsSetting( ) >= base.options.SpecialEffectsMedium: for i in range(3): effect = FlamingDebris.getEffect(unlimited) if effect: effect.wrtReparentTo(base.effectsRoot) self.setEffectPos(effect, hitObject, pos) effect.duration = 4 effect.velocityX = self.projVelocity[i][ 0] * 2 * random.choice([-1, 1]) effect.velocityY = self.projVelocity[i][ 1] * 3 * random.choice([-1, 1]) effect.play() effect = FireStormRingEffect.getEffect(unlimited) if effect: effect.wrtReparentTo(base.effectsRoot) self.setEffectPos(effect, hitObject, pos) effect.setEffectScale(1.5) effect.setRadius(30.0) effect.setEffectColor(Vec4(0.8, 0.4, 0.2, 1.0)) effect.play() if base.options.getSpecialEffectsSetting( ) >= base.options.SpecialEffectsHigh: for i in range(4): effect = FlamingDebris.getEffect(unlimited) if effect: effect.wrtReparentTo(base.effectsRoot) self.setEffectPos(effect, hitObject, pos) effect.duration = 4 effect.velocityX = self.projVelocity[i][ 0] * 3 * random.choice([-1, 1]) effect.velocityY = self.projVelocity[i][ 1] * 4 * random.choice([-1, 1]) effect.play() if ammoSkillId == InventoryType.DefenseCannonBullet: if base.options.getSpecialEffectsSetting( ) >= base.options.SpecialEffectsLow: shipDebris = BulletEffect.getEffect() if shipDebris: shipDebris.reparentTo(base.effectsRoot) shipDebris.setPos(hitObject, pos) shipDebris.setScale(1.0) shipDebris.loadObjects(6) shipDebris.play() return
def basicHitEffect(self, hitObject, pos, skillId, ammoSkillId): WeaponGlobals = WeaponGlobals import pirates.battle if self.cr: attacker = self.cr.doId2do.get(self.attackerId) aoeRadius = self.cr.battleMgr.getModifiedAttackAreaRadius(attacker, skillId, ammoSkillId) else: attacker = None aoeRadius = 0 if attacker: pass unlimited = bool(attacker.isLocal()) if config.GetBool('show-aoe-radius', 0): s = loader.loadModel('models/misc/smiley') s.reparentTo(render) s.setPos(hitObject, pos) s.setScale(aoeRadius) s.setTransparency(1) s.setColorScale(1.0, 0.5, 0.5, 0.40000000000000002) if ammoSkillId in [ InventoryType.DefenseCannonRoundShot, InventoryType.DefenseCannonHotShot, InventoryType.DefenseCannonBomb, InventoryType.DefenseCannonScatterShot, InventoryType.DefenseCannonPowderKeg, InventoryType.DefenseCannonMine, InventoryType.DefenseCannonTargetedShot]: if base.options.getSpecialEffectsSetting() >= base.options.SpecialEffectsLow: explosionEffect = ExplosionFlip.getEffect(unlimited) if explosionEffect: explosionEffect.reparentTo(base.effectsRoot) self.setEffectPos(explosionEffect, hitObject, pos) explosionEffect.setScale(0.80000000000000004) explosionEffect.play() if base.options.getSpecialEffectsSetting() >= base.options.SpecialEffectsMedium: smokeCloudEffect = SimpleSmokeCloud.getEffect(unlimited) if smokeCloudEffect: smokeCloudEffect.reparentTo(hitObject) self.setEffectPos(smokeCloudEffect, hitObject, pos) smokeCloudEffect.setEffectScale(1.0) smokeCloudEffect.play() if localAvatar.ship and hitObject == localAvatar.ship: cameraShakerEffect = CameraShaker() cameraShakerEffect.wrtReparentTo(hitObject) cameraShakerEffect.setPos(hitObject, pos) cameraShakerEffect.shakeSpeed = 0.040000000000000001 cameraShakerEffect.shakePower = 6.0 cameraShakerEffect.numShakes = 2 cameraShakerEffect.scalePower = 1 cameraShakerEffect.play(120.0) if ammoSkillId in [ InventoryType.DefenseCannonBomb, InventoryType.DefenseCannonMineInWater]: if base.options.getSpecialEffectsSetting() >= base.options.SpecialEffectsLow: effect = Explosion.getEffect(unlimited) if effect: effect.wrtReparentTo(hitObject) self.setEffectPos(effect, hitObject, pos) effect.setEffectScale(1.0) effect.setEffectRadius(aoeRadius / 3.0) effect.play() if base.options.getSpecialEffectsSetting() >= base.options.SpecialEffectsMedium: for i in range(2): effect = FlamingDebris.getEffect(unlimited) if effect: effect.wrtReparentTo(base.effectsRoot) self.setEffectPos(effect, hitObject, pos) effect.duration = 4 effect.velocityX = self.projVelocity[i][0] effect.velocityY = self.projVelocity[i][1] effect.play() continue if localAvatar.ship and hitObject == localAvatar.ship: cameraShakerEffect = CameraShaker() cameraShakerEffect.wrtReparentTo(hitObject) cameraShakerEffect.setPos(hitObject, pos) cameraShakerEffect.shakeSpeed = 0.040000000000000001 cameraShakerEffect.shakePower = 6.0 cameraShakerEffect.numShakes = 2 cameraShakerEffect.scalePower = 1 cameraShakerEffect.play(300.0) if base.options.getSpecialEffectsSetting() >= base.options.SpecialEffectsHigh: effect = FlamingDebris.getEffect(unlimited) if effect: effect.wrtReparentTo(base.effectsRoot) self.setEffectPos(effect, hitObject, pos) effect.duration = 4 effect.velocityX = self.projVelocity[i][0] effect.velocityY = self.projVelocity[i][1] effect.play() if ammoSkillId == InventoryType.DefenseCannonFireStorm: if base.options.getSpecialEffectsSetting() >= base.options.SpecialEffectsLow: for i in range(2): effect = FlamingDebris.getEffect(unlimited) if effect: effect.wrtReparentTo(base.effectsRoot) self.setEffectPos(effect, hitObject, pos) effect.duration = 4 effect.velocityX = self.projVelocity[i][0] * random.choice([ -1, 1]) effect.velocityY = self.projVelocity[i][1] * random.choice([ -1, 1]) effect.play() continue if base.options.getSpecialEffectsSetting() >= base.options.SpecialEffectsMedium: for i in range(3): effect = FlamingDebris.getEffect(unlimited) if effect: effect.wrtReparentTo(base.effectsRoot) self.setEffectPos(effect, hitObject, pos) effect.duration = 4 effect.velocityX = self.projVelocity[i][0] * 2 * random.choice([ -1, 1]) effect.velocityY = self.projVelocity[i][1] * 3 * random.choice([ -1, 1]) effect.play() continue effect = FireStormRingEffect.getEffect(unlimited) if effect: effect.wrtReparentTo(base.effectsRoot) self.setEffectPos(effect, hitObject, pos) effect.setEffectScale(1.5) effect.setRadius(30.0) effect.setEffectColor(Vec4(0.80000000000000004, 0.40000000000000002, 0.20000000000000001, 1.0)) effect.play() if base.options.getSpecialEffectsSetting() >= base.options.SpecialEffectsHigh: for i in range(4): effect = FlamingDebris.getEffect(unlimited) if effect: effect.wrtReparentTo(base.effectsRoot) self.setEffectPos(effect, hitObject, pos) effect.duration = 4 effect.velocityX = self.projVelocity[i][0] * 3 * random.choice([ -1, 1]) effect.velocityY = self.projVelocity[i][1] * 4 * random.choice([ -1, 1]) effect.play() continue if ammoSkillId == InventoryType.DefenseCannonBullet: if base.options.getSpecialEffectsSetting() >= base.options.SpecialEffectsLow: shipDebris = BulletEffect.getEffect() if shipDebris: shipDebris.reparentTo(base.effectsRoot) shipDebris.setPos(hitObject, pos) shipDebris.setScale(1.0) shipDebris.loadObjects(6) shipDebris.play()
def basicHitEffect(self, hitObject, pos, skillId, ammoSkillId): WeaponGlobals = WeaponGlobals import pirates.battle if self.cr: attacker = self.cr.doId2do.get(self.attackerId) aoeRadius = self.cr.battleMgr.getModifiedAttackAreaRadius(attacker, skillId, ammoSkillId) else: attacker = None aoeRadius = 0 if attacker: pass unlimited = bool(attacker.isLocal()) if config.GetBool('show-aoe-radius', 0): s = loader.loadModel('models/misc/smiley') s.reparentTo(render) s.setPos(hitObject, pos) s.setScale(aoeRadius) s.setTransparency(1) s.setColorScale(1.0, 0.5, 0.5, 0.40000000000000002) if ammoSkillId in [ InventoryType.CannonRoundShot, InventoryType.CannonChainShot, InventoryType.CannonBullet, InventoryType.CannonSkull, InventoryType.CannonBarShot, InventoryType.CannonFury, InventoryType.CannonFirebrand, InventoryType.CannonFlamingSkull, InventoryType.CannonThunderbolt]: hitSfxNames = [ SoundGlobals.SFX_FX_WOOD_IMPACT_01, SoundGlobals.SFX_FX_WOOD_IMPACT_02, SoundGlobals.SFX_FX_WOOD_IMPACT_03, SoundGlobals.SFX_FX_WOOD_IMPACT_04, SoundGlobals.SFX_FX_WOOD_SHATTER_02, SoundGlobals.SFX_FX_WOOD_SHATTER_03] sfx = loadSfx(random.choice(hitSfxNames)) base.playSfx(sfx, node = hitObject, cutoff = 1500) if base.options.getSpecialEffectsSetting() >= base.options.SpecialEffectsLow: explosionEffect = ExplosionFlip.getEffect(unlimited) if explosionEffect: explosionEffect.reparentTo(base.effectsRoot) explosionEffect.setPos(hitObject, pos) explosionEffect.setScale(0.80000000000000004) explosionEffect.play() if base.options.getSpecialEffectsSetting() >= base.options.SpecialEffectsMedium: smokeCloudEffect = SimpleSmokeCloud.getEffect(unlimited) if smokeCloudEffect: smokeCloudEffect.reparentTo(hitObject) smokeCloudEffect.setPos(hitObject, pos) smokeCloudEffect.setEffectScale(1.0) smokeCloudEffect.play() if localAvatar.ship and hitObject == localAvatar.ship: cameraShakerEffect = CameraShaker() cameraShakerEffect.wrtReparentTo(hitObject) cameraShakerEffect.setPos(hitObject, pos) cameraShakerEffect.shakeSpeed = 0.040000000000000001 cameraShakerEffect.shakePower = 6.0 cameraShakerEffect.numShakes = 2 cameraShakerEffect.scalePower = 1 cameraShakerEffect.play(120.0) if ammoSkillId == InventoryType.CannonExplosive: if base.options.getSpecialEffectsSetting() >= base.options.SpecialEffectsLow: effect = Explosion.getEffect(unlimited) if effect: effect.wrtReparentTo(hitObject) effect.setPos(hitObject, pos) effect.setEffectScale(1.0) effect.setEffectRadius(aoeRadius / 3.0) effect.play() if base.options.getSpecialEffectsSetting() >= base.options.SpecialEffectsMedium: for i in range(2): effect = FlamingDebris.getEffect(unlimited) if effect: effect.wrtReparentTo(base.effectsRoot) effect.setPos(hitObject, pos) effect.duration = 4 effect.velocityX = self.projVelocity[i][0] effect.velocityY = self.projVelocity[i][1] effect.play() continue if localAvatar.ship and hitObject == localAvatar.ship: cameraShakerEffect = CameraShaker() cameraShakerEffect.wrtReparentTo(hitObject) cameraShakerEffect.setPos(hitObject, pos) cameraShakerEffect.shakeSpeed = 0.040000000000000001 cameraShakerEffect.shakePower = 6.0 cameraShakerEffect.numShakes = 2 cameraShakerEffect.scalePower = 1 cameraShakerEffect.play(300.0) if base.options.getSpecialEffectsSetting() >= base.options.SpecialEffectsHigh: effect = FlamingDebris.getEffect(unlimited) if effect: effect.wrtReparentTo(base.effectsRoot) effect.setPos(hitObject, pos) effect.duration = 4 effect.velocityX = self.projVelocity[i][0] effect.velocityY = self.projVelocity[i][1] effect.play() if ammoSkillId == InventoryType.CannonThunderbolt: if base.options.getSpecialEffectsSetting() >= base.options.SpecialEffectsLow: effect = LightningStrike.getEffect(unlimited) if effect: effect.wrtReparentTo(base.effectsRoot) effect.setPos(hitObject, pos) effect.play() if base.options.getSpecialEffectsSetting() >= base.options.SpecialEffectsMedium: flashEffect = FlashEffect() flashEffect.wrtReparentTo(base.effectsRoot) flashEffect.setScale(600) flashEffect.setPos(hitObject, pos) flashEffect.effectColor = Vec4(0.5, 0.80000000000000004, 1, 1) flashEffect.fadeTime = 0.29999999999999999 flashEffect.play() if localAvatar.ship and hitObject == localAvatar.ship: cameraShakerEffect = CameraShaker() cameraShakerEffect.wrtReparentTo(hitObject) cameraShakerEffect.setPos(hitObject, pos) cameraShakerEffect.shakeSpeed = 0.059999999999999998 cameraShakerEffect.shakePower = 4.0 cameraShakerEffect.numShakes = 2 cameraShakerEffect.scalePower = 1 cameraShakerEffect.play(300.0) if base.options.getSpecialEffectsSetting() >= base.options.SpecialEffectsHigh: shipSplintersAEffect = ShipSplintersA.getEffect(unlimited) if shipSplintersAEffect: shipSplintersAEffect.wrtReparentTo(hitObject) shipSplintersAEffect.setPos(hitObject, pos) shipSplintersAEffect.play() elif ammoSkillId == InventoryType.CannonFury: flashEffect = FlashEffect() flashEffect.wrtReparentTo(base.effectsRoot) flashEffect.setScale(300) flashEffect.setPos(hitObject, pos) flashEffect.effectColor = Vec4(0.5, 0.80000000000000004, 1, 1) flashEffect.fadeTime = 0.25 flashEffect.play() elif ammoSkillId == InventoryType.GrenadeExplosion: explosionEffect = ExplosionFlip.getEffect(unlimited) if explosionEffect: explosionEffect.reparentTo(base.effectsRoot) explosionEffect.setPos(hitObject, pos) explosionEffect.setScale(1.0) explosionEffect.play() self.playSfx(ammoSkillId, explosionEffect) smokeCloudEffect = SmokeCloud.getEffect(unlimited) if smokeCloudEffect: smokeCloudEffect.reparentTo(hitObject) smokeCloudEffect.setPos(hitObject, pos) smokeCloudEffect.setScale(1.0) smokeCloudEffect.spriteScale = 1.0 smokeCloudEffect.radius = 7.0 smokeCloudEffect.play() if base.options.getSpecialEffectsSetting() >= base.options.SpecialEffectsMedium: shockwaveRingEffect = ShockwaveRing.getEffect(unlimited) if shockwaveRingEffect: shockwaveRingEffect.reparentTo(base.effectsRoot) shockwaveRingEffect.setPos(hitObject, pos) shockwaveRingEffect.size = aoeRadius * 4 shockwaveRingEffect.play() flashEffect = MuzzleFlash.getEffect(unlimited) if flashEffect: flashEffect.reparentTo(base.effectsRoot) flashEffect.flash.setScale(100) flashEffect.setPos(hitObject, pos) flashEffect.startCol = Vec4(0.69999999999999996, 0.69999999999999996, 0.69999999999999996, 1) flashEffect.fadeTime = 0.20000000000000001 flashEffect.play() cameraShakerEffect = CameraShaker() cameraShakerEffect.reparentTo(hitObject) cameraShakerEffect.setPos(hitObject, pos) cameraShakerEffect.shakeSpeed = 0.040000000000000001 cameraShakerEffect.shakePower = 6.0 cameraShakerEffect.numShakes = 2 cameraShakerEffect.scalePower = 1 cameraShakerEffect.play(80.0) if base.options.getSpecialEffectsSetting() >= base.options.SpecialEffectsHigh: rockShower = SmallRockShower.getEffect(unlimited) if rockShower: rockShower.reparentTo(hitObject) rockShower.setPos(hitObject, pos) rockShower.play() elif ammoSkillId == InventoryType.GrenadeShockBomb: explosionEffect = ExplosionFlip.getEffect(unlimited) if explosionEffect: explosionEffect.reparentTo(base.effectsRoot) explosionEffect.setPos(hitObject, pos) explosionEffect.setScale(1.0) explosionEffect.play() self.playSfx(ammoSkillId, explosionEffect) dustRingEffect = DustRing.getEffect(unlimited) if dustRingEffect: dustRingEffect.reparentTo(hitObject) dustRingEffect.setPos(hitObject, pos) dustRingEffect.play() if base.options.getSpecialEffectsSetting() >= base.options.SpecialEffectsMedium: shockwaveRingEffect = ShockwaveRing.getEffect(unlimited) if shockwaveRingEffect: shockwaveRingEffect.reparentTo(base.effectsRoot) shockwaveRingEffect.setPos(hitObject, pos) shockwaveRingEffect.size = aoeRadius * 4 shockwaveRingEffect.play() flashEffect = MuzzleFlash.getEffect(unlimited) if flashEffect: flashEffect.reparentTo(base.effectsRoot) flashEffect.flash.setScale(100) flashEffect.setPos(hitObject, pos) flashEffect.startCol = Vec4(0.69999999999999996, 0.69999999999999996, 0.69999999999999996, 1) flashEffect.fadeTime = 0.20000000000000001 flashEffect.play() cameraShakerEffect = CameraShaker() cameraShakerEffect.reparentTo(hitObject) cameraShakerEffect.setPos(hitObject, pos) cameraShakerEffect.shakeSpeed = 0.040000000000000001 cameraShakerEffect.shakePower = 3.0 cameraShakerEffect.numShakes = 2 cameraShakerEffect.scalePower = 1 cameraShakerEffect.play(80.0) elif ammoSkillId == InventoryType.GrenadeSiege: explosionEffect = ExplosionFlip.getEffect(unlimited) if explosionEffect: explosionEffect.reparentTo(base.effectsRoot) explosionEffect.setPos(hitObject, pos) explosionEffect.setScale(2.5) explosionEffect.play() self.playSfx(ammoSkillId, explosionEffect) smokePillarEffect = SmokePillar.getEffect(unlimited) if smokePillarEffect: smokePillarEffect.reparentTo(hitObject) smokePillarEffect.setPos(hitObject, pos) smokePillarEffect.setScale(1.0) smokePillarEffect.spriteScale = 1.0 smokePillarEffect.radius = 7.0 smokePillarEffect.play() if base.options.getSpecialEffectsSetting() >= base.options.SpecialEffectsMedium: dustRingEffect = DustRing.getEffect(unlimited) if dustRingEffect: dustRingEffect.reparentTo(hitObject) dustRingEffect.setPos(hitObject, pos) dustRingEffect.play() shockwaveRingEffect = ShockwaveRing.getEffect() if shockwaveRingEffect: shockwaveRingEffect.reparentTo(base.effectsRoot) shockwaveRingEffect.setPos(hitObject, pos) shockwaveRingEffect.size = aoeRadius * 4 shockwaveRingEffect.play() cameraShakerEffect = CameraShaker() cameraShakerEffect.wrtReparentTo(hitObject) cameraShakerEffect.setPos(hitObject, pos) cameraShakerEffect.shakeSpeed = 0.059999999999999998 cameraShakerEffect.shakePower = 4.0 cameraShakerEffect.numShakes = 2 cameraShakerEffect.scalePower = 1 cameraShakerEffect.play(80.0) if base.options.getSpecialEffectsSetting() >= base.options.SpecialEffectsHigh: shipSplintersAEffect = ShipSplintersA.getEffect(unlimited) if shipSplintersAEffect: shipSplintersAEffect.reparentTo(hitObject) shipSplintersAEffect.setPos(hitObject, pos) shipSplintersAEffect.play() for i in range(random.randint(3, 6)): debrisEffect = RockDebris.getEffect(unlimited) if debrisEffect: debrisEffect.reparentTo(base.effectsRoot) debrisEffect.setPos(hitObject, pos) debrisEffect.offsetEndPlaneZFrom(hitObject.getZ()) debrisEffect.debris.setScale(0.80000000000000004) debrisEffect.radiusDist = 30 debrisEffect.minHeight = 30 debrisEffect.maxHeight = 120 if debrisEffect.testTrajectory(): debrisEffect.play() else: debrisEffect.cleanUpEffect() debrisEffect.testTrajectory() flashEffect = MuzzleFlash.getEffect(unlimited) if flashEffect: flashEffect.reparentTo(base.effectsRoot) flashEffect.flash.setScale(200) flashEffect.setPos(hitObject, pos) flashEffect.startCol = Vec4(0.69999999999999996, 0.69999999999999996, 0.69999999999999996, 1) flashEffect.fadeTime = 0.20000000000000001 flashEffect.play() elif ammoSkillId == InventoryType.GrenadeFireBomb: fireEffect = Fire.getEffect(unlimited) if fireEffect: fireEffect.wrtReparentTo(base.effectsRoot) fireEffect.setPos(hitObject, pos + Vec3(0, 0, -1.5)) fireEffect.setScale(Vec3(0.75, 0.75, 0.75)) fireEffect.duration = 2.5 fireEffect.play() flashEffect = MuzzleFlash.getEffect(unlimited) if flashEffect: flashEffect.wrtReparentTo(base.effectsRoot) flashEffect.flash.setScale(100) flashEffect.setPos(hitObject, pos) flashEffect.startCol = Vec4(0.69999999999999996, 0.69999999999999996, 0.69999999999999996, 1) flashEffect.fadeTime = 0.20000000000000001 flashEffect.play() self.playSfx(ammoSkillId, flashEffect) if base.options.getSpecialEffectsSetting() >= base.options.SpecialEffectsMedium: shockwaveRingEffect = ShockwaveRing.getEffect(unlimited) if shockwaveRingEffect: shockwaveRingEffect.wrtReparentTo(base.effectsRoot) shockwaveRingEffect.setPos(hitObject, pos) shockwaveRingEffect.size = aoeRadius * 4 shockwaveRingEffect.play() cameraShakerEffect = CameraShaker() cameraShakerEffect.wrtReparentTo(hitObject) cameraShakerEffect.setPos(hitObject, pos) cameraShakerEffect.shakeSpeed = 0.040000000000000001 cameraShakerEffect.shakePower = 2.0 cameraShakerEffect.numShakes = 2 cameraShakerEffect.scalePower = 1 cameraShakerEffect.play(80.0) if base.options.getSpecialEffectsSetting() >= base.options.SpecialEffectsHigh: blackSmokeEffect = LightSmoke.getEffect(unlimited) if blackSmokeEffect: blackSmokeEffect.wrtReparentTo(base.effectsRoot) blackSmokeEffect.setPos(hitObject, pos) blackSmokeEffect.duration = 4.0 blackSmokeEffect.play() elif ammoSkillId == InventoryType.GrenadeSmokeCloud: explosionEffect = ExplosionFlip.getEffect(unlimited) if explosionEffect: explosionEffect.reparentTo(base.effectsRoot) explosionEffect.setPos(hitObject, pos) explosionEffect.setScale(1.0) explosionEffect.play() self.playSfx(ammoSkillId, explosionEffect) smokeCloudEffect = SmokeBomb.getEffect(unlimited) if smokeCloudEffect: smokeCloudEffect.reparentTo(hitObject) smokeCloudEffect.setPos(hitObject, pos) smokeCloudEffect.radius = aoeRadius / 1.5 smokeCloudEffect.play() self.playSfx(ammoSkillId, smokeCloudEffect) if base.options.getSpecialEffectsSetting() >= base.options.SpecialEffectsMedium: shockwaveRingEffect = ShockwaveRing.getEffect(unlimited) if shockwaveRingEffect: shockwaveRingEffect.wrtReparentTo(base.effectsRoot) shockwaveRingEffect.setPos(hitObject, pos) shockwaveRingEffect.size = aoeRadius * 4 shockwaveRingEffect.play() cameraShakerEffect = CameraShaker() cameraShakerEffect.wrtReparentTo(hitObject) cameraShakerEffect.setPos(hitObject, pos) cameraShakerEffect.shakeSpeed = 0.040000000000000001 cameraShakerEffect.shakePower = 2.0 cameraShakerEffect.numShakes = 2 cameraShakerEffect.scalePower = 1 cameraShakerEffect.play(80.0)