def __init__(self, actor, id): Gun.__init__(self, actor, 27, "models/basicdroid/pistol", id) self.clipSize = 12 self.ammo = self.clipSize self.light = engine.Light(color=Vec4(1.0, 0.7, 0.4, 1), attenuation=Vec3(0, 0, 0.003)) self.tracer = particles.BulletTracerParticleGroup() self.pistolSound = audio.SoundPlayer("pistol") self.pinSound = audio.SoundPlayer("claw") self.fireTime = 0.05 self.burstTimeBase = 0.5 self.burstDelayBase = 1.25 self.shotDelayBase = 0.15
def kill(self, aiWorld, entityGroup, localDelete = True): "Immediately trigger an explosion." if self.active: pos = self.getPosition() grenadeSound = audio.SoundPlayer("grenade") grenadeSound.play(position = self.getPosition()) ObjectEntity.kill(self, aiWorld, entityGroup, localDelete) entityGroup.explode(pos, force = 40, damage = 67, damageRadius = 20, sourceEntity = self, damagingEntity = self.actor) # Give damage credit to our parent actor
def __init__(self, actor, id): Weapon.__init__(self, actor, id) self.impaleStart = -1 self.impaleTarget = None self.node = engine.loadAnimation( "models/basicdroid/claw", { "Impale": "models/basicdroid/claw-Impale", "Retract": "models/basicdroid/claw-Retract" }) self.node.reparentTo(engine.renderLit) self.clawSound = audio.SoundPlayer("claw") self.clawFailSound = audio.SoundPlayer("claw-fail") self.clawRetractSound = audio.SoundPlayer("claw-retract") self.impulseVector = None self.damage = 75 self.fireTime = 1.25 self.hide()
def kill(self, aiWorld, entityGroup, localDelete = True): if self.active: position = self.getPosition() entityGroup.explode(position, force = 2000, damage = 0, damageRadius = 25, sourceEntity = self) explosionSound = audio.SoundPlayer("large-explosion") explosionSound.play(position = position) Actor.kill(self, aiWorld, entityGroup, localDelete)
def __init__(self, actor, id): Gun.__init__(self, actor, 10, "models/basicdroid/chaingun", id) self.clipSize = 50 self.ammo = self.clipSize self.light = engine.Light(color=Vec4(1.0, 0.7, 0.4, 1), attenuation=Vec3(0, 0, 0.003)) self.tracer = particles.BulletTracerParticleGroup() self.chainGunSound = audio.SoundPlayer("chaingun") self.fireTime = 0.05 self.isAutomatic = True
def __init__(self, actor, damage, modelFile, id): Weapon.__init__(self, actor, id) self.clipSize = 10 self.ammo = self.clipSize self.ammoAdditions = 0 # So that if fire() is called between serverUpdate and clientUpdate, ammo is still depleted self.reloadTime = 2.0 self.newReloadActive = False self.reloadStarted = False # Server side; only true one frame self.damage = damage self.lastReload = -1 self.ricochetSound = audio.SoundPlayer("ricochet") self.reloadSound = audio.SoundPlayer("reload") self.showSound = audio.SoundPlayer("change-weapon") self.node = engine.loadModel(modelFile) self.modelFile = modelFile self.node.reparentTo(engine.renderLit) self.activeSound = 0 # Client side self.showTime = -1 # For the showing animation self.totalShowTime = 0.3 Gun.hide(self)
def kill(self, aiWorld, entityGroup, localDelete = True): # Add fragments pos = self.getPosition() shatterSound = audio.SoundPlayer("glass-shatter") shatterSound.play(position = pos) for _ in range(40): offset = Vec3(uniform(-self.glassWidth / 2.0, self.glassWidth / 2.0), 0, uniform(-self.glassHeight / 2.0, self.glassHeight / 2.0)) fragment = GlassFragment(aiWorld.world, aiWorld.space, render.getRelativePoint(self.node, offset), Vec3()) entityGroup.generateEntityId(fragment, 1024) entityGroup.addEntity(fragment) ObjectEntity.kill(self, aiWorld, entityGroup, localDelete)
def __init__(self, actor, id): Gun.__init__(self, actor, 150, "models/basicdroid/shotgun", id) self.clipSize = 8 self.ammo = self.clipSize self.light = engine.Light(color=Vec4(1.0, 0.7, 0.4, 1), attenuation=Vec3(0, 0, 0.003)) self.tracer = particles.BulletTracerParticleGroup() self.shotGunSound = audio.SoundPlayer("shotgun") self.fireTime = 1.0 self.range = 15 self.accuracy = 1.0 self.burstTimeBase = 0.3
def kill(self, aiWorld, entityGroup, localDelete = True): if self.active: position = self.getPosition() entityGroup.explode(position, force = 50, damage = 80, damageRadius = 25, sourceEntity = self, damagingEntity = None) # Give damage credit to our parent actor explosionSound = audio.SoundPlayer("large-explosion") explosionSound.play(position = position) # Add fragments for _ in range(8): offset = Vec3(uniform(-1, 1), uniform(-1, 1), uniform(0, 1)) offset.normalize() fragment = Fragment(aiWorld.world, aiWorld.worldNP, position + (offset * 1.5), offset * 30) entityGroup.generateEntityId(fragment, 1024) entityGroup.addEntity(fragment) ObjectEntity.kill(self, aiWorld, entityGroup, localDelete)
def __init__(self, actor, id): Gun.__init__(self, actor, 50, "models/basicdroid/sniper", id) self.defaultCrosshair = 0 # No crosshair self.zoomedCrosshair = 3 # Sniper scope self.zoomedFov = 25 self.zoomedMouseSpeed = 0.15 self.clipSize = 4 self.ammo = self.clipSize self.light = engine.Light(color=Vec4(1.0, 0.7, 0.4, 1), attenuation=Vec3(0, 0, 0.003)) self.tracer = particles.BulletTracerParticleGroup() self.sniperSound = audio.SoundPlayer("sniper-rifle") self.zoomed = False self.fireTime = 0.8 self.reloadTime = 3.0 self.range = 300 self.accuracy = 0.27
def __init__(self, actor, id): Weapon.__init__(self, actor, id) self.grenadeLaunchSound = audio.SoundPlayer("grenade-launch") self.fireTime = 3.0 self.grenadeId = -1