def __init__(self, mg, weaponName = "pistol"):
        self.mg = mg
        self.weaponName = weaponName
        self.v_model_root = None
        self.v_model = None
        self.weapon = None
        self.track = None
        self.draw = None
        self.shoot = None
        self.reload = None
        self.empty = None
        self.cockBack = None
        self.cockFwd = None
        self.player_node = None

        # blach (02Aug15)
        # Drastically improved the accuracy of bullets... DRASTICALLY
        self.shooterTrav = None
        self.shooterRay = None
        self.shooterRayNode = None
        self.shooterHandler = None

        self.gui = ToonFPSGui(self)
        self.fsm = ClassicFSM('ToonFPS', [State('off', self.enterOff, self.exitOff),
                State('alive', self.enterAlive, self.exitAlive),
                State('dead', self.enterDead, self.exitDead)],
                'off', 'off')
        #self.deadFSM = ClassicFSM('dead', [State('off', self.enterOff, self.exitOff),
        #		State('])
        self.aliveFSM = ClassicFSM('alive', [State('off', self.enterOff, self.exitOff),
                State('draw', self.enterDraw, self.exitDraw, ['idle']),
                State('idle', self.enterIdle, self.exitIdle, ['shoot', 'reload']),
                State('shoot', self.enterShoot, self.exitShoot, ['idle']),
                State('reload', self.enterReload, self.exitReload, ['idle'])],
                'off', 'off')
        self.fsm.getStateNamed('alive').addChild(self.aliveFSM)
        #self.fsm.getStateNamed('dead').addChild(self.deadFSM)
        self.fsm.enterInitialState()
        self.aliveFSM.enterInitialState()
        if self.weaponName == "pistol":
            self.ammo = 14
        elif self.weaponName == "shotgun":
            self.ammo = 7
        self.hp = 125
        self.max_hp = 125
        self.firstPerson = FirstPerson()
 def __init__(self, mg, weaponName='pistol'):
     self.mg = mg
     self.weaponName = weaponName
     self.v_model_root = None
     self.v_model = None
     self.weapon = None
     self.track = None
     self.draw = None
     self.shoot = None
     self.reload = None
     self.empty = None
     self.cockBack = None
     self.cockFwd = None
     self.player_node = None
     self.shooterTrav = None
     self.shooterRay = None
     self.shooterRayNode = None
     self.shooterHandler = None
     self.gui = ToonFPSGui(self)
     self.fsm = ClassicFSM('ToonFPS', [
         State('off', self.enterOff, self.exitOff),
         State('alive', self.enterAlive, self.exitAlive),
         State('dead', self.enterDead, self.exitDead)
     ], 'off', 'off')
     self.aliveFSM = ClassicFSM('alive', [
         State('off', self.enterOff, self.exitOff),
         State('draw', self.enterDraw, self.exitDraw, ['idle']),
         State('idle', self.enterIdle, self.exitIdle, ['shoot', 'reload']),
         State('shoot', self.enterShoot, self.exitShoot, ['idle']),
         State('reload', self.enterReload, self.exitReload, ['idle'])
     ], 'off', 'off')
     self.fsm.getStateNamed('alive').addChild(self.aliveFSM)
     self.fsm.enterInitialState()
     self.aliveFSM.enterInitialState()
     if self.weaponName == 'pistol':
         self.ammo = 14
     else:
         if self.weaponName == 'shotgun':
             self.ammo = 7
     self.hp = 125
     self.max_hp = 125
     self.firstPerson = FirstPerson()
     return