<?xml version="1.0"?>
<ItemRenderer>
  <Data>
    <Sprite name="s_punchProjectileTrail" fileName="game/particles11.rttex" textureSize="32" frame="27,29" />
    <Sprite name="s_punchProjectile" fileName="game/particles11.rttex" textureSize="32" frame="26,29" />
    <Sprite name="s_stickFire" fileName="game/particles11.rttex" textureSize="32" frame="20,29" />
    <Sprite name="s_stick" fileName="game/player_longhanditem4.rttex" textureSize="64,32" frame="4,6" />
    <Sprite name="s_stickGlow" fileName="game/player_longhanditem4.rttex" textureSize="64,32" frame="5,6" />
    <Sprite name="s_tileHit" fileName="game/particles_large14.rttex" textureSize="64" frame="12,9" />

    <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>
      <SpriteCurveAnimation name="a_stickGlow" isLoop="true" autoPlay="true" sprite="s_stickGlow" animTime="5000">
        <Curve name="alpha">
          <KeyFrame>0.f, 0.f</KeyFrame>
          <KeyFrame>0.2f, 0.f </KeyFrame>
          <KeyFrame>0.4f, 1.f</KeyFrame>
          <KeyFrame>0.8f, 1.f</KeyFrame>
          <KeyFrame>1.f, 0.f</KeyFrame>
        </Curve>
      </SpriteCurveAnimation>
      <SpriteAnimation name="stick_fire_animation" sprite="s_stickFire" animTime="600" autoPlay="true" isLoop="true">
        <Frame>20,29</Frame>
        <Frame>21,29</Frame>
        <Frame>22,29</Frame>
        <Frame>23,29</Frame>
        <Frame>24,29</Frame>
        <Frame>25,29</Frame>
      </SpriteAnimation>
      <SpriteCurveAnimation name="a_punchProjectileTrailScale" sprite="s_punchProjectileTrail" animTime="200" isLoop="true" playOnState="Punch.True">
        <Curve name="scale">
          <KeyFrame>0.f, 0.1f, 1f</KeyFrame>
          <KeyFrame>1.f, 1.f, 1f</KeyFrame>
        </Curve>
      </SpriteCurveAnimation>
      <SpriteCurveAnimation name="a_punchProjectileTrailAlpha" sprite="s_punchProjectileTrail" animTime="200" isLoop="true" playOnState="Punch.True">
        <Curve name="alpha">
          <KeyFrame>0.f, 1.f</KeyFrame>
          <KeyFrame>0.7f, 1.f</KeyFrame>
          <KeyFrame>1.f, 0.f</KeyFrame>
        </Curve>
      </SpriteCurveAnimation>
    </Animations>

    <ParticleSystems>
      <ParticleSystem name="ps_punchProjectile" updateStage="RenderHandItem" updateState="Punch.True">
        <Emitter attachment="handspotRoot">
          <Set name="offset">34,10</Set>
          <Set name="lifeTime">0.3</Set>
          <Set name="emissionInterval">0.05</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_punchProjectile</Set>
          <Set name="blendingMode">PREMULTIPLIED_ALPHA</Set>
          <Set name="lifeTime">0.2</Set>
          <VectorTo name="initialVelocity" source="targetPos" duration="lifeTime" x="1" angleOutVar="projectile_angle"/>
          <Set name="rotateWithVelocity">true</Set>
          <SetVar name="projectile_offset" source="targetPosOffset"/>
        </Particle>
      </ParticleSystem>
      <ParticleSystem name="ps_tileHit" updateStage="OnDamagedTile">
        <Emitter>
          <Set name="particlesPerEmission">1</Set>
        </Emitter>
        <Particle>
          <Set name="sprite">s_tileHit</Set>
          <Set name="blendingMode">ADDITIVE</Set>
          <Curve name="initialScale">
            <KeyFrame>0, 0.6, 0.6</KeyFrame>
            <KeyFrame>1, 1.2, 1.2</KeyFrame>
          </Curve>
          <Curve name="initialAlpha">
            <KeyFrame>0, 1</KeyFrame>
            <KeyFrame>0.65, 1</KeyFrame>
            <KeyFrame>1, 0</KeyFrame>
          </Curve>
          <Set name="lifeTime">0.5</Set>
          <Random name="initialAngle" min="0" max="360" />
        </Particle>
      </ParticleSystem>
    </ParticleSystems>
      
    <VariableMap>
      <Set name="staff_offset">16.5, 8, 0</Set>
      <Set name="fire_offset_right">14, 0, 0</Set>
      <Set name="fire_rotation">0, 0, 0, 1</Set>
      <Set name="fire_offset_down">0, -7, 0</Set>
    </VariableMap>
    
    <RenderOptions>
      <Default>
        <Set name="PunchSoundOverride">HAND</Set>
        <Set name="PlayDefaultPunchAudio">false</Set>
        <Set name="RenderFrontArmInTheFront">true</Set>
        <Set name="RenderFrontArmInfected">true</Set>
        <Set name="IncludeAllActions">true</Set>
        <Set name="IgnoreDefaultDamagedTileEffect">true</Set>
        <Set name="DefaultRenderMannequinHandItem">false</Set>
      </Default>
    </RenderOptions>
  </Data>
  
  <RenderRules>
    <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>
    <RenderHandItem>
      <Translate>staff_offset</Translate>
      <SpriteRender name="s_stick" blend="PREMULTIPLIED_ALPHA" />
      <SpriteRender name="s_stickGlow" blend="PREMULTIPLIED_ALPHA" />
      <StopIf>
        <IsZombified>true</IsZombified>
        <IsSitting ItemID="ITEM_ID_THEATER_SEAT">true</IsSitting>
        <IsSleepingOnaBed>true</IsSleepingOnaBed>
      </StopIf>
      <Translate>fire_offset_right</Translate>
      <SpriteRender name="s_punchProjectileTrail" flip="1,0" onState="Punch.True" blend="PREMULTIPLIED_ALPHA" stretchToTarget="true" alignmentLeft="LEFT_CENTER" alignmentRight="RIGHT_CENTER" drawShadow="false"/>
      <Rotate forceValue="true">fire_rotation</Rotate>
      <Translate>fire_offset_down</Translate>
      <SpriteRender name="s_stickFire" blend="ADDITIVE" drawShadow="false"/>
    </RenderHandItem>
  </RenderRules>
</ItemRenderer>
