<?xml version="1.0"?>
<ItemRenderer>
  <Data>
    <Sprite name="s_guitarIdle" fileName="game/particles12.rttex" textureSize="32" frame="18,2"/>
    <Sprite name="s_guitarPunch" fileName="game/player_longhanditem4.rttex" textureSize="64,32" frame="5,7"/>
    <Sprite name="s_guitarPunchGlow" fileName="game/player_longhanditem4.rttex" textureSize="64,32" frame="6,7"/>
    <Sprite name="s_strap" fileName="game/particles12.rttex" textureSize="32" frame="19,1"/>
    <Sprite name="s_shards" fileName="game/particles12.rttex" textureSize="32" frame="13,4"/>
    <Sprite name="s_mist" fileName="game/particles12.rttex" textureSize="32" frame="15,3"/>
    <Sprite name="s_mistFinish" fileName="game/particles12.rttex" textureSize="32" frame="15,3"/>
    <Sprite name="s_ember" fileName="game/particles12.rttex" textureSize="32" frame="11,4"/>
    <Sprite name="s_note" fileName="game/particles11.rttex" textureSize="32" frame="9,28"/>

    <Animations>
      <SpriteCurveAnimation name="a_guitarPunchGlow" sprite="s_guitarPunchGlow" animTime="1000" playOnState="Action.Punch|Action.Dance">
        <Curve name="alpha">
          <KeyFrame>0.f, 0.f</KeyFrame>
          <KeyFrame>1.f, 1.f</KeyFrame>
        </Curve>
      </SpriteCurveAnimation>
      <SpriteAnimation name="a_strapIdle" sprite="s_strap" animTime="100" isLoop="true" playOnState="Action.None">
        <Frame>19,1</Frame>
      </SpriteAnimation>
      <SpriteAnimation name="a_strapPunch" sprite="s_strap" animTime="100" isLoop="true" playOnState="Action.Punch">
        <Frame>20,1</Frame>
      </SpriteAnimation>
      <SpriteAnimation name="a_strapDance" sprite="s_strap" animTime="100" isLoop="true" playOnState="Action.Dance">
        <Frame>21,1</Frame>
      </SpriteAnimation>
      <SpriteAnimation name="a_mist" sprite="s_mist">
        <Frame>15,3</Frame>
        <Frame>16,3</Frame>
      </SpriteAnimation>
      <SpriteAnimation name="a_ember" sprite="s_ember">
        <Frame>11,4</Frame>
        <Frame>12,4</Frame>
      </SpriteAnimation>
      <CurveAnimationFloat name="a_footExtend" isLoop="true" animTime="500" playOnState="Action.Dance">
        <Curve name="footOffset">
          <KeyFrame>0, -2</KeyFrame>
          <KeyFrame>0.5, 1</KeyFrame>
          <KeyFrame>1, -2</KeyFrame>
        </Curve>
      </CurveAnimationFloat>
      <SpriteAnimation name="a_note" sprite="s_note">
        <Frame>11,28</Frame>
        <Frame>12,28</Frame>
      </SpriteAnimation>
    </Animations>

    <VariableMap>
      <Set name="item.Rotation">340</Set>
      <Set name="footOffset">0</Set>
      <Set name="rotation">340</Set>
      <Set name="facingVariable">1,1,1</Set>
    </VariableMap>

    <StateMachines>
      <StateMachine name="Action">
        <States>
          <State name="None"/>
          <State name="Punch"/>
          <State name="Dance"/>
        </States>
        <Transitions>
          <Transition to="None" from="Punch|Dance">
            <Condition type="and">
              <IsAction operatorType="NotEqual">PUNCH</IsAction>
              <IsAction operatorType="NotEqual">DANCE</IsAction>
              <IsAction operatorType="NotEqual">DANCE_FLOSS</IsAction>
            </Condition>
          </Transition>
          <Transition to="Punch" from="None|Dance">
            <Condition type="and">
              <IsAction>PUNCH</IsAction>
              <IsZombified>false</IsZombified>
              <IsAction operatorType="NotEqual">DANCE</IsAction>
              <IsAction operatorType="NotEqual">DANCE_FLOSS</IsAction>
            </Condition>
          </Transition>
          <Transition to="Dance" from="None|Punch">
            <Condition type="and">
              <IsAction operatorType="NotEqual">PUNCH</IsAction>
              <IsZombified>false</IsZombified>
              <SubCondition type="or">
                <IsAction>DANCE</IsAction>
                <IsAction>DANCE_FLOSS</IsAction>
              </SubCondition>
            </Condition>
          </Transition>
        </Transitions>
      </StateMachine>
    </StateMachines>

    <ParticleSystems>
      <ParticleSystem name="ps_note" updateStage="AddClothingParticles" updateState="Action.Dance">
        <Emitter>
          <Set name="offset">0, -8</Set>
          <Set name="emissionInterval">0.25</Set>
          <Set name="infParticles">true</Set>
          <Set name="infLifeTime">true</Set>
          <Set name="particlesPerEmission">1</Set>
          <Set name="particlesToEmit">1</Set>
        </Emitter>
        <Particle randomSpriteFrame="true">
          <Set name="sprite">s_note</Set>
          <Set name="blendingMode">PREMULTIPLIED_ALPHA</Set>
          <Curve name="initialAlpha">
            <KeyFrame>0, 1</KeyFrame>
            <KeyFrame>1, 0</KeyFrame>
          </Curve>
          <Curve name="initialScale">
            <KeyFrame>0, 1, 1</KeyFrame>
            <KeyFrame>1, 0, 0</KeyFrame>
          </Curve>
          <Set name="lifeTime">2.5</Set>
          <Random name="offset" min="-16, 0" max="16, 0" />
          <Random name="initialVelocity" min="0, -60" max="0, -30" />
          <Random name="initialRotationRate" min="-60" max="60" />
        </Particle>
      </ParticleSystem>
      <ParticleSystem name="ps_PunchFire" renderStage="RenderHandItem" updateStage="AddClothingParticles" updateState="Action.Punch">
        <Emitter>
          <Set name="offset">15, -6</Set>
          <Random name="emissionInterval" min="0.001" max="0.005" />
          <Set name="infParticles">true</Set>
          <Set name="infLifeTime">true</Set>
          <Set name="particlesPerEmission">1</Set>
        </Emitter>
        <Particle>
          <Set name="sprite">s_shards</Set>
          <Set name="inSpecificOrder">true</Set>
          <Set name="renderAlignment">LEFT_CENTER</Set>
          <Set name="blendingMode">ADDITIVE</Set>
          <Set name="rotateWithVelocity">true</Set>
          <Set name="lifeTime">0.5</Set>
          <Curve name="initialAlpha">
            <KeyFrame>0, 0.5</KeyFrame>
            <KeyFrame>0.8, 0.5</KeyFrame>
            <KeyFrame>1, 0</KeyFrame>
          </Curve>
          <Curve name="initialScale">
            <KeyFrame>0, 1, 0.3</KeyFrame>
            <KeyFrame>1, 1.5, 1.5</KeyFrame>
          </Curve>
          <Random name="targetPosOffset" min="-12,-8" max="12,8"/>
          <VectorTo name="initialVelocity" source="targetPos" offset="targetPosOffset" duration="lifeTime" x="0.7"/>
        </Particle>
      </ParticleSystem>
      <ParticleSystem name="ps_punchEmber" renderStage="RenderHandItem" updateStage="AddClothingParticles" updateState="Action.Punch">
        <Emitter>
          <Set name="offset">0, -6</Set>
          <Set name="particlesPerEmission">1</Set>
          <Set name="emissionInterval">0.1</Set>
          <Set name="infParticles">true</Set>
          <Set name="infLifeTime">true</Set>
        </Emitter>
        <Particle randomSpriteFrame="true">
          <Set name="sprite">s_ember</Set>
          <Set name="inSpecificOrder">true</Set>
          <Set name="blendingMode">PREMULTIPLIED_ALPHA</Set>
          <Curve name="initialAlpha">
            <KeyFrame>0, 1</KeyFrame>
            <KeyFrame>0.5, 1</KeyFrame>
            <KeyFrame>1, 0</KeyFrame>
          </Curve>
          <Set name="useGravity">true</Set>
          <Set name="lifeTime">1</Set>
          <Random name="initialVelocity" min="-20,-20" max="20,-30"/>
          <Random name="offset" min="-5,-5" max="0,0"/>
          <Set name="gravityVector">0, 60</Set>
        </Particle>
      </ParticleSystem>
      <ParticleSystem name="ps_onHitEmber" updateStage="OnDamagedTile">
        <Emitter>
          <Set name="particlesPerEmission">5</Set>
        </Emitter>
        <Particle randomSpriteFrame="true">
          <Set name="sprite">s_ember</Set>
          <Curve name="initialAlpha">
            <KeyFrame>0, 1</KeyFrame>
            <KeyFrame>0.5, 1</KeyFrame>
            <KeyFrame>1, 0</KeyFrame>
          </Curve>
          <Set name="useGravity">true</Set>
          <Set name="lifeTime">1</Set>
          <Set name="blendingMode">PREMULTIPLIED_ALPHA</Set>
          <RandomRadial name="initialVelocity" angleRange="0,360" radiusRange="10,25"/>
          <Set name="gravityVector">0, 60</Set>
        </Particle>
      </ParticleSystem>
      <ParticleSystem name="ps_onDestroyEmber" updateStage="OnDestroyedTile">
        <Emitter>
          <Set name="particlesPerEmission">10</Set>
        </Emitter>
        <Particle randomSpriteFrame="true">
          <Set name="sprite">s_ember</Set>
          <Curve name="initialAlpha">
            <KeyFrame>0, 1</KeyFrame>
            <KeyFrame>0.5, 1</KeyFrame>
            <KeyFrame>1, 0</KeyFrame>
          </Curve>
          <Set name="useGravity">true</Set>
          <Set name="lifeTime">1</Set>
          <Set name="blendingMode">PREMULTIPLIED_ALPHA</Set>
          <RandomRadial name="initialVelocity" angleRange="0,360" radiusRange="10,25"/>
          <Set name="gravityVector">0, 60</Set>
        </Particle>
      </ParticleSystem>
    </ParticleSystems>

    <TileStampData>
      <Set name="FileName">game/particles12.rttex</Set>
      <Set name="EndFrame">19,4</Set>
      <Set name="FrameCount">4</Set>
      <Set name="RenderDefaultCracks">false</Set>
    </TileStampData>

    <RenderOptions>
      <Default>
        <Set name="DefaultRenderMannequinHandItem">false</Set>
        <Set name="HideParticlesOnTransform">false</Set>
        <Set name="IgnoreDefaultDamagedTileEffect">true</Set>
        <Set name="PunchSoundOverride">HAND</Set>
        <Set name="RenderFrontArmInfected">true</Set>
        <Set name="RenderBackArmInfected">true</Set>
        <Set name="RenderFrontArmInTheFront">true</Set>
        <Set name="IncludeAllActions">true</Set>
        <Set name="IsFacingChangeDisabled">false</Set>
        <Set name="PlayDefaultPunchAudio">false</Set>
      </Default>
      <Override overrideOnAction="DANCE">
        <Set name="IsFacingChangeDisabled">true</Set>
      </Override>
      <Override overrideOnAction="DANCE_FLOSS">
        <Set name="IsFacingChangeDisabled">true</Set>
      </Override>
    </RenderOptions>
  </Data>

  <RenderRules>
    <Update>
      <ArithmethicOperation LeftHandVariableName="rotation" RightHandVariableName="item.Rotation" OperationType="Set" />
      <ArithmethicOperation LeftHandVariableName="rotation" RightHandVariableName="facingVariable.x" OperationType="Multiply" />
      <Group onState="Action.Dance">
        <AvatarTransform class="FootPosition">
          <Set name="foot1y">footOffset</Set>
          <Set name="foot2y">footOffset</Set>
        </AvatarTransform>
        <AvatarTransform class="ArmAngle">
          <Set name="armName">arm1Angle</Set>
          <Set name="armAngle">-90</Set>
        </AvatarTransform>
        <AvatarTransform class="ArmAngle">
          <Set name="armName">arm2Angle</Set>
          <Set name="pulseArmScale">20</Set>
          <Set name="pulseArmRate">100</Set>
          <Set name="armAngle">-40</Set>
        </AvatarTransform>
        <AvatarTransform class="Face">
          <Set name="face">MAD</Set>
        </AvatarTransform>
        <MusicSource>
          <Set name="MusicFile">audio/mp3/death_metal_radio.mp3</Set>
        </MusicSource>
      </Group>

    </Update>
    <OnPunchUpdate>
      <AvatarTransform class="Face">
        <Set name="face">MAD</Set>
      </AvatarTransform>
      <AvatarTransform class="ArmAngle">
        <Set name="armName">arm2Angle</Set>
        <Set name="armAngle">1500</Set>
        <Set name="isAdditive">true</Set>
      </AvatarTransform>
      <AvatarTransform class="ArmAngle">
        <Set name="armName">arm1Angle</Set>
        <Set name="armAngle">0</Set>
      </AvatarTransform>
    </OnPunchUpdate>
    <RenderHandItem>
      <StopIf>
        <IsZombified>true</IsZombified>
      </StopIf>
      <Group onState="Action.Dance">
        <Rotate forceValue="true">rotation</Rotate>
        <SpriteRender name="s_guitarPunchGlow" offset="6,8" blend="ADDITIVE" drawShadow="false"/>
        <SpriteRender name="s_guitarPunch" offset="6,8" blend="PREMULTIPLIED_ALPHA"/>
      </Group>
      <Group onState="Action.Punch">
        <SpriteRender name="s_guitarPunchGlow" offset="4,8" blend="ADDITIVE" useFixedRotation="true" fixedRotation="0" drawShadow="false"/>
        <SpriteRender name="s_guitarPunch" offset="4,8" blend="PREMULTIPLIED_ALPHA" useFixedRotation="true" fixedRotation="0"/>
      </Group>
    </RenderHandItem>
    <RenderFrontArm>
      <SpriteRender name="s_strap" offset="1,0" alignment="DOWN_CENTER" useFixedRotation="true" fixedRotation="0"/>
    </RenderFrontArm>
    <RenderBehind value="playerCenter">
      <StopIf>
        <IsTrnsformed>true</IsTrnsformed>
        <IsSleepingOnaBed>true</IsSleepingOnaBed>
        <IsWearing slot="SHIRT">ITEM_ID_TACTICAL_STEALTH_DEVICE</IsWearing>
        <IsWearing slot="SHOES">ITEM_ID_STAR_FIGHTER_REBEL_RAIDER</IsWearing>
        <IsWearing slot="SHOES">ITEM_ID_STAR_FIGHTER_IMPERIAL_ENFORCER</IsWearing>
      </StopIf>
      <SpriteRender name="s_guitarIdle" offset="0, -16" onState="Action.None" useFixedRotation="true" fixedRotation="0"/>
      <Group>
      <StopIf>
        <IsZombified>false</IsZombified>
      </StopIf>
      <SpriteRender name="s_guitarIdle" offset="0, -16" onState="Action.None" useFixedRotation="true" fixedRotation="0" tintOverride="111,217,45,255"/>
      </Group>
      <Group>
        <StopIf>
          <IsSitting ItemID="ITEM_ID_THEATER_SEAT">false</IsSitting>
        </StopIf>
        <SpriteRender name="s_guitarIdle" offset="0, -16" onState="Action.None" useFixedRotation="true" fixedRotation="0" tintOverride="0,0,0,255"/>
      </Group>
    </RenderBehind>
  </RenderRules>
</ItemRenderer>
