<?xml version="1.0"?>
<ItemRenderer>
  <Data>
    <Sprite name="s_wand" fileName="game/particles_large13.rttex" textureSize="64" frame="14,9" />
    <Sprite name="s_wandGlow" fileName="game/particles_large13.rttex" textureSize="64" frame="15,9" />
    <Sprite name="s_Sparkles" fileName="game/particles9.rttex" textureSize="32" frame="28,23" />
    <Sprite name="s_wandGodRays" fileName="game/particles_large13.rttex" textureSize="64" frame="12,13" />
    <Sprite name="s_damageGodRays" fileName="game/particles_large13.rttex" textureSize="64" frame="15,7" />
    
    <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>
      <StateMachine name="Motion">
        <States>
          <State name="Idle" />
          <State name="Move" />
        </States>
        <Transitions>
          <Transition to="Idle" from="Move">
            <Condition>
              <IsVariableFloat name="speed.length" operator="Less" abs="true">0.1</IsVariableFloat>
            </Condition>
          </Transition>
          <Transition to="Move" from="Idle">
            <Condition>
              <IsVariableFloat name="speed.length" operator="Greater" abs="true">0.1</IsVariableFloat>
            </Condition>
          </Transition>
        </Transitions>
      </StateMachine>
    </StateMachines>
    
    <Animations>
      <SpriteAnimation name="a_wandGodRays" sprite="s_wandGodRays">
        <Frame>12,13</Frame>
        <Frame>13,13</Frame>
        <Frame>14,13</Frame>
        <Frame>15,13</Frame>
      </SpriteAnimation>
      <SpriteAnimation name="a_Sparkles" sprite="s_Sparkles" animTime="400" autoPlay="true" isLoop="true">
        <Frame>28,23</Frame>
        <Frame>29,23</Frame>
        <Frame>30,23</Frame>
      </SpriteAnimation>
      <SpriteCurveAnimation name="a_wandGlow" isLoop="true" playOnState="Punch.False" sprite="s_wandGlow" animTime="3000">
        <Curve name="alpha">
          <KeyFrame>0.f, 0.f</KeyFrame>
          <KeyFrame>0.5f, 1.f </KeyFrame>
          <KeyFrame>1.f, 0.f</KeyFrame>
        </Curve>
      </SpriteCurveAnimation>
      <SpriteCurveAnimation name="a_wandGlowPunch" isLoop="true" playOnState="Punch.True" sprite="s_wandGlow" animTime="3000">
        <Curve name="alpha">
          <KeyFrame>0.f, 1.f</KeyFrame>
          <KeyFrame>1.f, 1.f</KeyFrame>
        </Curve>
      </SpriteCurveAnimation>
    </Animations>

    <ParticleSystems>
      <ParticleSystem name="ps_wandSparkles">
        <Emitter>
          <Set name="offset">0,0</Set>
          <Set name="offsetFacing">true</Set>
          <Set name="emissionInterval">0.4</Set>
          <Set name="infParticles">true</Set>
          <Set name="infLifeTime">true</Set>
          <Set name="particlesPerEmission">2</Set>
          <Set name="particlesToEmit">2</Set>
        </Emitter>
        <Particle>
          <Set name="sprite">s_Sparkles</Set>
          <Set name="inSpecificOrder">true</Set>
          <Random name="offset" min="-8,-8.1" max="8,8.1" />
          <Set name="blendingMode">PREMULTIPLIED_ALPHA</Set>
          <Curve name="initialAlpha">
            <KeyFrame>0, 0</KeyFrame>
            <KeyFrame>0.3, 1</KeyFrame>
            <KeyFrame>0.8, 1</KeyFrame>
            <KeyFrame>1, 0</KeyFrame>
          </Curve>
          <Set name="lifeTime">0.85</Set>
          <Random name="initialScale" min="0.3" max="0.8"/>
          <Random name="initialRotationRate" min="-180" max="180"/>
        </Particle>
      </ParticleSystem>
      <ParticleSystem name="ps_wandSparklesMove">
        <Emitter>
          <Set name="offset">0,0</Set>
          <Set name="offsetFacing">true</Set>
          <Set name="emissionInterval">0.2</Set>
          <Set name="infParticles">true</Set>
          <Set name="infLifeTime">true</Set>
          <Set name="particlesPerEmission">2</Set>
          <Set name="particlesToEmit">2</Set>
        </Emitter>
        <Particle>
          <Set name="sprite">s_Sparkles</Set>
          <Set name="inSpecificOrder">true</Set>
          <Random name="offset" min="-8,-8.1" max="8,8.1" />
          <Set name="blendingMode">PREMULTIPLIED_ALPHA</Set>
          <Curve name="initialAlpha">
            <KeyFrame>0, 0</KeyFrame>
            <KeyFrame>0.3, 1</KeyFrame>
            <KeyFrame>0.8, 1</KeyFrame>
            <KeyFrame>1, 0</KeyFrame>
          </Curve>
          <Set name="lifeTime">0.85</Set>
          <Random name="initialScale" min="0.3" max="0.8"/>
          <Random name="initialRotationRate" min="-180" max="180"/>
        </Particle>
      </ParticleSystem>
      <ParticleSystem name="ps_wandSparklesPunchTarget">
        <Emitter attachment="targetPos">
          <Set name="offset">0,0</Set>
          <Set name="offsetFacing">true</Set>
          <Set name="emissionInterval">0.2</Set>
          <Set name="infParticles">true</Set>
          <Set name="infLifeTime">true</Set>
          <Set name="particlesPerEmission">2</Set>
          <Set name="particlesToEmit">2</Set>
        </Emitter>
        <Particle>
          <Set name="sprite">s_Sparkles</Set>
          <Random name="offset" min="-8,-8.1" max="8,8.1" />
          <Set name="blendingMode">PREMULTIPLIED_ALPHA</Set>
          <Curve name="initialAlpha">
            <KeyFrame>0, 0</KeyFrame>
            <KeyFrame>0.3, 1</KeyFrame>
            <KeyFrame>0.8, 1</KeyFrame>
            <KeyFrame>1, 0</KeyFrame>
          </Curve>
          <Set name="lifeTime">0.85</Set>
          <Random name="initialScale" min="0.3" max="0.8"/>
          <Random name="initialRotationRate" min="-180" max="180"/>
        </Particle>
      </ParticleSystem>
      <ParticleSystem name="ps_wandGodRays">
        <Emitter>
          <Set name="lifeTime">15</Set>
          <Set name="emissionInterval">0.2</Set>
          <Set name="infParticles">true</Set>
          <Set name="particlesPerEmission">1</Set>
        </Emitter>
        <Particle randomSpriteFrame="true" usePlayerFacing="true">
          <Set name="sprite">s_wandGodRays</Set>
          <Set name="relativeToEmitter">true</Set>
          <Set name="blendingMode">PREMULTIPLIED_ALPHA</Set>
          <Curve name="initialAlpha">
            <KeyFrame>0, 0</KeyFrame>
            <KeyFrame>0.5, 1</KeyFrame>
            <KeyFrame>1, 0</KeyFrame>
          </Curve>
          <Curve name="initialScale">
            <KeyFrame>0, 0.5, 0.5</KeyFrame>
            <KeyFrame>0.5, 0.75, 0.75</KeyFrame>
            <KeyFrame>1, 0.75, 0.75</KeyFrame>
          </Curve>
          <Set name="lifeTime">0.5</Set>
          <Random name="initialAngle" min="0" max="360"/>
        </Particle>
      </ParticleSystem>
      <ParticleSystem name="ps_wandGodRaysIdle">
        <Emitter>
          <Set name="lifeTime">15</Set>
          <Set name="emissionInterval">0.8</Set>
          <Set name="infParticles">true</Set>
          <Set name="particlesPerEmission">1</Set>
        </Emitter>
        <Particle randomSpriteFrame="true" usePlayerFacing="true">
          <Set name="sprite">s_wandGodRays</Set>
          <Set name="inSpecificOrder">true</Set>
          <Set name="relativeToEmitter">true</Set>
          <Set name="blendingMode">PREMULTIPLIED_ALPHA</Set>
          <Curve name="initialAlpha">
            <KeyFrame>0, 0</KeyFrame>
            <KeyFrame>0.25, 0.2</KeyFrame>
            <KeyFrame>0.75, 0.2</KeyFrame>
            <KeyFrame>1, 0</KeyFrame>
          </Curve>
          <Curve name="initialScale">
            <KeyFrame>0, 0.5, 0.5</KeyFrame>
            <KeyFrame>0.5, 0.75, 0.75</KeyFrame>
            <KeyFrame>1, 0.75, 0.75</KeyFrame>
          </Curve>
          <Set name="lifeTime">2</Set>
          <Random name="initialAngle" min="0" max="360"/>
        </Particle>
      </ParticleSystem>
      <ParticleSystem name="ps_damageGodRays">
        <Emitter>
          <Set name="lifeTime">0.3</Set>
          <Set name="emissionInterval">0.2</Set>
          <Set name="infParticles">true</Set>
          <Set name="particlesPerEmission">1</Set>
        </Emitter>
        <Particle>
          <Set name="sprite">s_damageGodRays</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.75, 0.75</KeyFrame>
            <KeyFrame>0.5, 1.25, 1.25</KeyFrame>
            <KeyFrame>1, 1.25, 1.25</KeyFrame>
          </Curve>
          <Set name="lifeTime">1</Set>
          <Random name="initialAngle" min="0" max="360"/>
        </Particle>
      </ParticleSystem>

    </ParticleSystems>
    
    <VariableMap>
      <Set name="wand_offset">6, 2, 0</Set>
      <Set name="sparkles_offset_right">0, -12, 0</Set>
    </VariableMap>
    
    <RenderOptions>
      <Default>
        <Set name="PunchSoundOverride">HAND</Set>
        <Set name="PlayDefaultPunchAudio">false</Set>
        <Set name="DefaultRenderMannequinHandItem">false</Set>
        <Set name="RenderBackArmInfected">true</Set>
        <Set name="RenderFrontArmInfected">true</Set>
        <Set name="RenderBackArmBuild">false</Set>
        <Set name="IgnoreDefaultDamagedTileEffect">true</Set>
        <Set name="RenderBackArmAfterItem">true</Set>
      </Default>
    </RenderOptions>
  </Data>
  
  <RenderRules>
    <OnPunchUpdate>
      <AvatarTransform class="Face">
        <Set name="face">NORMAL</Set>
      </AvatarTransform>
      <AvatarTransform class="ArmAngle">
        <Set name="armName">arm1Angle</Set>
        <Set name="animTime">700</Set>
        <Set name="Curve">
          <KeyFrame>0.0, 270</KeyFrame>
          <KeyFrame>0.5, 300</KeyFrame>
          <KeyFrame>1, 270</KeyFrame>
        </Set>
      </AvatarTransform>
    </OnPunchUpdate>
    <RenderBackHandItem>
      <StopIf type="and">
        <IsZombified>true</IsZombified>
        <IsAction>PUNCH</IsAction>
      </StopIf>
      <Translate>wand_offset</Translate>
      <Rotate>90,0,0,1</Rotate>
      <SpriteRender name="s_wand" blend="PREMULTIPLIED_ALPHA" rotationPoint="0,1" alignment="CENTER" rotateOffset="true"/>
      <SpriteRender name="s_wandGlow" blend="PREMULTIPLIED_ALPHA" drawShadow="false" rotationPoint="0,1" alignment="CENTER" rotateOffset="true"/>
      <StopIf>
        <IsZombified>true</IsZombified>
        <IsSitting ItemID="ITEM_ID_THEATER_SEAT">true</IsSitting>
        <IsSleepingOnaBed>true</IsSleepingOnaBed>
      </StopIf>
      <Group>
        <Translate>sparkles_offset_right</Translate>
        <StopIf>
          <IsVariableBool name="isMannequin">true</IsVariableBool>
        </StopIf>
        <ParticleSystemUpdate name="ps_wandSparkles"/>
        <ParticleSystemRender name="ps_wandSparkles" onState="Motion.Idle"/>
        <ParticleSystemUpdate name="ps_wandSparklesMove"/>
        <ParticleSystemRender name="ps_wandSparklesMove" onState="Motion.Move"/>
        <ParticleSystemUpdate name="ps_wandGodRays" onState="Punch.True"/>
        <ParticleSystemUpdate name="ps_wandGodRaysIdle"/>
        <ParticleSystemRender name="ps_wandGodRaysIdle"/>
        <ParticleSystemUpdate name="ps_wandSparklesPunchTarget" onState="Punch.True"/>
      </Group>
    </RenderBackHandItem>
    <OnDamagedTile>
      <ParticleSystemUpdate name="ps_damageGodRays" />
    </OnDamagedTile>
  </RenderRules>
</ItemRenderer>
