<?xml version="1.0"?>
<ItemRenderer item="ITEM_ID_ROYAL_MUSCLE_MINIGUN">
    <Data>
      <Sprite name="s_FrontArm" fileName="game/player_cosmetics3.rttex" textureSize="32" frame="9,20"/>
      <Sprite name="s_Minigun" fileName="game/player_cosmetics3.rttex" textureSize="32" frame="4,21"/>
      <Sprite name="s_MuzzleFlash" fileName="game/particles10.rttex" textureSize="32" frame="31,10"/>
      <Sprite name="s_Projectile" fileName="game/particles11.rttex" textureSize="32" frame="17,25"/>
      <Sprite name="s_ProjectileHit" fileName="game/particles11.rttex" textureSize="32" frame="18,25"/>
      <Sprite name="s_ProjectileHitSparks" fileName="game/particles11.rttex" textureSize="32" frame="22,25"/>

      <StateMachines>
        <StateMachine name="Punch">
          <States>
            <State name="True"/>
            <State name="False"/>
          </States>
          <Transitions>
            <Transition from="False" to="True">
              <Condition type="and">
                <IsAction>PUNCH</IsAction>
                <IsZombified>false</IsZombified>
              </Condition>
            </Transition>
            <Transition from="True" to="False">
              <Condition>
                <IsAction operatorType="NotEqual">PUNCH</IsAction>
              </Condition>
            </Transition>
          </Transitions>
        </StateMachine>
      </StateMachines>

      <Animations>
        <SpriteAnimation name="a_PunchGun" sprite="s_Minigun" animTime="250" isLoop="true" playOnState="Punch.True">
          <Frame>4,21</Frame>
          <Frame>5,21</Frame>
          <Frame>6,21</Frame>
          <Frame>7,21</Frame>
          <Frame>8,21</Frame>
        </SpriteAnimation>
        <SpriteAnimation name="a_NonPunchGun" sprite="s_Minigun" animTime="100" isLoop="true" playOnState="Punch.False">
          <Frame>4,21</Frame>
        </SpriteAnimation>
        <SpriteAnimation name="a_ProjectileBlast" sprite="s_ProjectileHit" animTime="400">
          <Frame>21,25</Frame>
          <Frame>18,25</Frame>
          <Frame>19,25</Frame>
          <Frame>20,25</Frame>
        </SpriteAnimation>
        <SpriteAnimation name="a_ProjectilehitSparks" sprite="s_ProjectileHitSparks">
          <Frame>22,25</Frame>
          <Frame>23,25</Frame>
        </SpriteAnimation>
      </Animations>

      <RenderOptions>
        <Default>
          <Set name="PunchSoundOverride">HAND</Set>
          <Set name="PlayDefaultPunchAudio">false</Set>
          <Set name="DefaultRenderMannequinHandItem">false</Set>
          <Set name="RenderFrontArmInfected">true</Set>
        </Default>
      </RenderOptions>

      <ParticleSystems>
        <ParticleSystem name="MuzzleFlash" updateStage="RenderHandItem" updateState="Punch.True">
          <Emitter attachment="handspotRoot">
            <Set name="offset">18, 12</Set>
            <Set name="lifeTime">0.15</Set>
            <Set name="infParticles">true</Set>
            <Set name="checkParticleNumToEmit">true</Set>
            <Set name="particlesPerEmission">1</Set>
            <Set name="particlesToEmit">1</Set>
          </Emitter>
          <Particle usePlayerFacing="true">
            <Set name="sprite">s_MuzzleFlash</Set>
            <Set name="relativeToEmitter">true</Set>
            <Set name="blendingMode">PREMULTIPLIED_ALPHA</Set>
            <Curve name="initialAlpha">
              <KeyFrame>0, 1</KeyFrame>
              <KeyFrame>1, 0</KeyFrame>
            </Curve>
            <Set name="lifeTime">0.15</Set>
          </Particle>
        </ParticleSystem>
        <ParticleSystem name="Punch" updateStage="RenderHandItem" updateState="Punch.True" secondary="BulletHit">
          <Emitter attachment="handspotRoot">
            <Random name="offset" min="10, 8" max="18, 16"/>
            <Set name="lifeTime">0.15</Set>
            <Set name="infParticles">true</Set>
            <Set name="checkParticleNumToEmit">true</Set>
            <Set name="particlesPerEmission">1</Set>
            <Set name="particlesToEmit">1</Set>
          </Emitter>
          <Particle>
            <Set name="sprite">s_Projectile</Set>
            <Set name="blendingMode">PREMULTIPLIED_ALPHA</Set>
            <Set name="rotateWithVelocity">true</Set>
            <Set name="lifeTime">0.2</Set>
            <Random name="targetPosOffset" min="-15, -16" max="15, 16"/>
            <VectorTo name="initialVelocity" source="targetPos" offset="targetPosOffset" duration="lifeTime" x="1"/>
          </Particle>
        </ParticleSystem>
        <ParticleSystem name="BulletHit" secondary="BulletHitSparks">
          <Emitter>
            <Set name="offset">0, 0</Set>
            <Set name="infParticles">true</Set>
            <Set name="checkParticleNumToEmit">true</Set>
            <Set name="particlesPerEmission">1</Set>
            <Set name="particlesToEmit">1</Set>
            <Set name="delayTimer">0.2</Set>
          </Emitter>
          <Particle>
            <Set name="sprite">s_ProjectileHit</Set>
            <Set name="blendingMode">PREMULTIPLIED_ALPHA</Set>
            <Set name="lifeTime">0.4</Set>
            <Random name="initialAngle" min="0" max="360"/>
            <Set name="initialScale">0.5,0.5</Set>
          </Particle>
        </ParticleSystem>
        <ParticleSystem name="BulletHitSparks">
          <Emitter>
            <Set name="offset">0, 0</Set>
            <Set name="infParticles">true</Set>
            <Set name="checkParticleNumToEmit">true</Set>
            <Set name="particlesPerEmission">4</Set>
            <Set name="particlesToEmit">1</Set>
            <Set name="delayTimer">0.01</Set>
          </Emitter>
          <Particle randomSpriteFrame="true">
            <Set name="sprite">s_ProjectileHitSparks</Set>
            <Set name="blendingMode">PREMULTIPLIED_ALPHA</Set>
            <Set name="lifeTime">0.5</Set>
            <Set name="useGravity">true</Set>
            <Set name="gravityVector">0, 100</Set>
            <RandomRadial name="initialVelocity" angleRange="-225,45" radiusRange="50,50" />
            <Curve name="initialAlpha">
              <KeyFrame>0, 1</KeyFrame>
              <KeyFrame>0.9, 1</KeyFrame>
              <KeyFrame>1, 0</KeyFrame>
            </Curve>
            <Set name="initialScale">0.5,0.5</Set>
          </Particle>
        </ParticleSystem>
      </ParticleSystems>
    </Data>

    <RenderRules>
      <RenderHandItem>
        <SpriteRender name="s_FrontArm" offset="0,-1" rotateOffset="true" rotationPoint="0,1" alignment="UPPER_CENTER" blend="PREMULTIPLIED_ALPHA" tintOverride="SKIN"/>
        <SpriteRender name="s_Minigun" offset="0,0" rotateOffset="true" rotationPoint="0,1" alignment="UPPER_CENTER" blend="PREMULTIPLIED_ALPHA"/>
      </RenderHandItem>
      <OnPunchUpdate>
        <StopIf>
          <IsZombified>true</IsZombified>
        </StopIf>
        <AvatarTransform class="Emotion">
          <Set name="emotion">ANGRY</Set>
        </AvatarTransform>
        <AvatarTransform class="ArmAngle">
          <Set name="armName">arm2Angle</Set>
          <Set name="angleOffset">90</Set>
          <Set name="pointTowardsPunchTarget">true</Set>
        </AvatarTransform>
        <AvatarTransform class="ArmAngle">
          <Set name="armName">arm1Angle</Set>
          <Set name="armAngle">0</Set>
        </AvatarTransform>
      </OnPunchUpdate>

      <RenderFrontArm>
        <ContextUpdate type="PositionSinPulse" onState="Punch.True">
          <Set name="period">100</Set>
          <Set name="scale">-0.5</Set>
          <Set name="clamp">true</Set>
        </ContextUpdate>
      </RenderFrontArm>
    </RenderRules>
  </ItemRenderer>