<?xml version="1.0" encoding="utf-8"?>
<ItemRenderer>
  <Data>
    <Sprite name="s_axe" fileName="game/player_longhanditem4.rttex" textureSize="64,32" frame="3,12"/>
    <Sprite name="s_punch_watermelon" fileName="game/particles12.rttex" textureSize="32" frame="28,12"/>
    <Sprite name="s_punch_watermelon_trail" fileName="game/particles10.rttex" textureSize="32" frame="17,27"/>
    <Sprite name="s_punch_splash" fileName="game/particles10.rttex" textureSize="32" frame="19,27"/>
    <Sprite name="s_punch_chunks" fileName="game/particles10.rttex" textureSize="32" frame="16,27"/>

    <Animations>
      <SpriteAnimation name="a_axe_equip" autoPlay="false" sprite="s_axe" playOnState="Action.None">
        <Frame>3,12</Frame>
      </SpriteAnimation>
      <SpriteAnimation name="a_axe_punch" autoPlay="false" sprite="s_axe" playOnState="Action.Punch">
        <Frame>4,12</Frame>
      </SpriteAnimation>
      <SpriteAnimation name="a_punch_watermelon_trail" autoPlay="false" sprite="s_punch_watermelon_trail">
        <Frame>17,27</Frame>
        <Frame>18,27</Frame>
      </SpriteAnimation>
      <SpriteAnimation name="a_punch_chunks" autoPlay="false" sprite="s_punch_chunks">
        <Frame>16,27</Frame>
        <Frame>17,27</Frame>
        <Frame>18,27</Frame>
      </SpriteAnimation>
    </Animations>

    <StateMachines>
      <StateMachine name="Action">
        <States>
          <State name="None" />
          <State name="Punch" />
        </States>
        <Transitions>
          <Transition to="None" from="Punch">
            <Condition type="or">
              <IsAction operatorType="NotEqual">PUNCH</IsAction>
              <IsZombified>true</IsZombified>
            </Condition>
          </Transition>
          <Transition to="Punch" from="None">
            <Condition type="and">
              <IsAction>PUNCH</IsAction>
              <IsZombified>false</IsZombified>
            </Condition>
          </Transition>
        </Transitions>
      </StateMachine>
    </StateMachines>

    <ParticleSystems>
      <ParticleSystem name="ps_punch" secondary="ps_punch_trail">
        <Emitter>
          <Set name="offset">9,-18</Set>
          <Set name="emissionInterval">0.25</Set>
          <Set name="lifeTime">0.25</Set>
          <Set name="particlesPerEmission">1</Set>
          <Set name="particlesToEmit">1</Set>
        </Emitter>
        <Particle>
          <Set name="sprite">s_punch_watermelon</Set>
          <Set name="blendingMode">PREMULTIPLIED_ALPHA</Set>
          <Set name="lifeTime">0.4</Set>
          <Set name="rotateWithVelocity">true</Set>
          <Set name="interpolateAlpha">false</Set>
          <Set name="initialScale">1,1</Set>
          <Set name="initialAlpha">1</Set>
          <Set name="finalAlpha">1</Set>
          <Set name="interpolateVelocity">true</Set>
          <Select name="initialRotationRate" input="randomNumber">
            <Item>-600</Item>
            <Item>600</Item>
          </Select>
          <VectorTo name="initialVelocity" source="targetPos" duration="lifeTime" x="0.8" angle="0"/>
          <VectorTo name="finalVelocity" source="targetPos" duration="lifeTime" x="0.8" angle="0"/>
        </Particle>
      </ParticleSystem>
      <ParticleSystem name="ps_punch_trail">
        <Emitter>
          <Set name="lifeTime">0.4</Set>
          <Set name="particlesPerEmission">2</Set>
          <Set name="particlesToEmit">80</Set>
          <Set name="emissionInterval">0.05</Set>
          <Set name="offset">0,-16</Set>
        </Emitter>
        <Particle randomSpriteFrame="true">
          <Set name="sprite">s_punch_watermelon_trail</Set>
          <Set name="blendingMode">PREMULTIPLIED_ALPHA</Set>
          <Set name="lifeTime">0.4</Set>
          <Set name="initialVelocity" source="trail.velocity.final"/>
          <Curve name="initialAlpha">
            <KeyFrame>0, 1</KeyFrame>
            <KeyFrame>1, 0</KeyFrame>
          </Curve>
          <Random name="initialScale" min="0.5" max="1" />
          <Random name="offset" min="-8,-8" max="8,8" />
          <Select name="initialRotationRate" input="randomNumber">
            <Item>-600</Item>
            <Item>600</Item>
          </Select>
        </Particle>
      </ParticleSystem>
      <ParticleSystem name="ps_chunks">
        <Emitter>
          <Set name="particlesPerEmission">20</Set>
        </Emitter>
        <Particle randomSpriteFrame="true">
          <Set name="sprite">s_punch_chunks</Set>
          <Curve name="initialAlpha">
            <KeyFrame>0, 1</KeyFrame>
            <KeyFrame>0.75, 1</KeyFrame>
            <KeyFrame>1, 0</KeyFrame>
          </Curve>
          <Set name="useGravity">true</Set>

          <Random name="initialScale" min="0.5" max="0.75" />
          <Set name="lifeTime">1</Set>
          <RandomRadial name="initialVelocity" angleRange="0,360" radiusRange="60,100"/>
          <Set name="gravityVector">0, 60</Set>
        </Particle>
      </ParticleSystem>
      <ParticleSystem name="ps_splash">
        <Emitter>
          <Set name="particlesPerEmission">1</Set>
          <Set name="lifeTime">0.5</Set>
          <Set name="delayTimer">0.1</Set>
        </Emitter>
        <Particle>
          <Set name="sprite">s_punch_splash</Set>
          <Set name="blendingMode">PREMULTIPLIED_ALPHA</Set>
          <Curve name="initialAlpha">
            <KeyFrame>0, 1</KeyFrame>
            <KeyFrame>0.5, 1</KeyFrame>
            <KeyFrame>1, 0</KeyFrame>
          </Curve>
          <Curve name="initialScale">
            <KeyFrame>0, 0.8,0.8</KeyFrame>
            <KeyFrame>1, 1.2, 1.2</KeyFrame>
          </Curve>
          <Set name="lifeTime">0.75</Set>
          <Random name="initialAngle" min="0" max="360" />
        </Particle>
      </ParticleSystem>
    </ParticleSystems>
    <VariableMap>
      <Set name="Player.GetFacing">0</Set>
      <Set name="trail.velocity.original">-40,0,0</Set>
      <Set name="trail.velocity.final">50, 50</Set>
      <Set name="Punch.GetPosition">0,0,0</Set>
      <Set name="Context.GetPosition">0,0,0</Set>
    </VariableMap>

    <RenderOptions>
      <Default>
        <Set name="RenderFrontArmInfected">true</Set>
        <Set name="DefaultRenderMannequinHandItem">false</Set>
        <Set name="RenderFrontArmInTheFront">true</Set>
        <Set name="IgnoreDefaultDamagedTileEffect">true</Set>
      </Default>
    </RenderOptions>
  </Data>

  <RenderRules>
    <RenderHandItem>
      <Translate>4,-7,0</Translate>
      <SpriteRender name="s_axe" rotationPoint="0,1" alignment="UPPER_CENTER" blend="PREMULTIPLIED_ALPHA" />
    </RenderHandItem>
    <Update>
      <Group onState="Action.Punch">
        <ArithmethicOperation LeftHandVariableName="trail.velocity.final" RightHandVariableName="Punch.GetPosition" OperationType="Set"/>
        <ArithmethicOperation LeftHandVariableName="trail.velocity.final" RightHandVariableName="Context.GetPosition" OperationType="Substract"/>
        <ArithmethicOperation LeftHandVariableName="trail.velocity.final" RightHandVariableName="trail.velocity.original" OperationType="Normalize"/>
      </Group>
    </Update>
    <OnPunchStart>
      <StopIf>
        <IsZombified>true</IsZombified>
      </StopIf>
      <ParticleSystemUpdate name="ps_punch"/>
    </OnPunchStart>
    <OnPunchUpdate>
      <Group onState="Action.Punch">
        <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>
      </Group>
    </OnPunchUpdate>
    <OnDamagedTile>
        <ParticleSystemUpdate name="ps_splash"/>
        <ParticleSystemUpdate name="ps_chunks"/>
    </OnDamagedTile>
    <OnDestroyedTile>
        <ParticleSystemUpdate name="ps_splash"/>
        <ParticleSystemUpdate name="ps_chunks"/>
    </OnDestroyedTile>
  </RenderRules>
</ItemRenderer>