<?xml version="1.0"?>
<ItemRenderer>
  <Data>
    <Sprite name="s_cape" fileName="game/particles_large15.rttex" textureSize="64" frame="0,14" />
    <Sprite name="s_doubleJumpDownCloud" fileName="game/particles10.rttex" textureSize="32" frame="6,8" />
    <Sprite name="s_doubleJumpLines" fileName="game/particles10.rttex" textureSize="32" frame="4,8" />
    <Sprite name="s_doubleJumpSideCloud" fileName="game/particles10.rttex" textureSize="32" frame="5,8" />
    <Sprite name="s_medal" fileName="game/player_cosmetics3.rttex" textureSize="32" frame="7,29" />
    <Sprite name="s_medalFlipped" fileName="game/player_cosmetics3.rttex" textureSize="32" frame="8,29" />
    <Sprite name="s_pet" fileName="game/pets/p_cb_royal.rttex" textureSize="32" frame="0,0" />
    <Sprite name="s_punch_laser" fileName="game/particles12.rttex" textureSize="32" frame="20,0" />
    <Sprite name="s_punch_plasma" fileName="game/particles12.rttex" textureSize="32" frame="22,0" />
    <Sprite name="s_tileHit" fileName="game/particles4.rttex" textureSize="32" frame="2,0" />
    <VariableMap>
      <Set name="PetFlyWalk.IsWalking">false</Set>
      <Set name="PetFlyWalk.IsFlying">false</Set>
      <Set name="PetFlyWalk.IsLanding">true</Set>
      <Set name="PetFlyWalk.IsPunching">false</Set>
      <Set name="PetFlyWalk.IsTakeoff">false</Set>
      <Set name="PunchDelay">1.0</Set>
      <Set name="DeltaTime">0.0</Set>
    </VariableMap>
    <Animations>
      <SpriteCurveAnimation name="plasma_anim" sprite="s_punch_plasma" animTime="500" isLoop="true" playOnState="Pet.IdleShoot|Pet.FlyingShoot">
        <Curve name="scale">
          <KeyFrame>0.f, 0.1f, 0.75f</KeyFrame>
          <KeyFrame>0.5f, 0.75f, 0.5f</KeyFrame>
          <KeyFrame>1.f, 1.25f, 0.75f</KeyFrame>
        </Curve>
      </SpriteCurveAnimation>
      <SpriteAnimation name="a_PetFly" sprite="s_pet" animTime="300" isLoop="true" playOnState="Pet.Fly">
        <Frame>1,1</Frame>
        <Frame>2,1</Frame>
        <Frame>3,1</Frame>
      </SpriteAnimation>
      <SpriteAnimation name="a_PetFlyingShoot" sprite="s_pet" animTime="300" isLoop="true" playOnState="Pet.FlyingShoot">
        <Frame>4,1</Frame>
      </SpriteAnimation>
      <SpriteAnimation name="a_PetIdle" sprite="s_pet" animTime="300" isLoop="true" playOnState="Pet.Idle">
        <Frame>0,0</Frame>
        <Frame>1,0</Frame>
        <Frame>2,0</Frame>
      </SpriteAnimation>
      <SpriteAnimation name="a_PetIdleShoot" sprite="s_pet" animTime="100" isLoop="true" playOnState="Pet.IdleShoot">
        <Frame>0,1</Frame>
      </SpriteAnimation>
      <SpriteAnimation name="a_PetLand" sprite="s_pet" animTime="100" isLoop="true" playOnState="Pet.Land">
        <Frame>7,0</Frame>
      </SpriteAnimation>
      <SpriteAnimation name="a_PetTakeoff" sprite="s_pet" animTime="100" isLoop="true" playOnState="Pet.TakeOff">
        <Frame>6,0</Frame>
      </SpriteAnimation>
      <SpriteAnimation name="a_PetWalk" sprite="s_pet" animTime="300" isLoop="true" playOnState="Pet.Walk">
        <Frame>3,0</Frame>
        <Frame>4,0</Frame>
        <Frame>5,0</Frame>
      </SpriteAnimation>
      <SpriteAnimation name="a_capeFall" sprite="s_cape" animTime="200" isLoop="true" playOnState="Motion.Fall">
        <Frame>6,15</Frame>
        <Frame>7,15</Frame>
      </SpriteAnimation>
      <SpriteAnimation name="a_capeIdle" sprite="s_cape" animTime="700" isLoop="true" playOnState="Motion.Idle">
        <Frame>0,14</Frame>
        <Frame>1,14</Frame>
        <Frame>2,14</Frame>
        <Frame>3,14</Frame>
        <Frame>4,14</Frame>
        <Frame>5,14</Frame>
        <Frame>6,14</Frame>
      </SpriteAnimation>
      <SpriteAnimation name="a_capeJump" sprite="s_cape" animTime="200" isLoop="true" playOnState="Motion.Jump">
        <Frame>4,15</Frame>
        <Frame>5,15</Frame>
      </SpriteAnimation>
      <SpriteAnimation name="a_capeMove" sprite="s_cape" animTime="800" isLoop="true" playOnState="Motion.Move">
        <Frame>7,14</Frame>
        <Frame>8,14</Frame>
        <Frame>9,14</Frame>
        <Frame>10,14</Frame>
        <Frame>11,14</Frame>
        <Frame>12,14</Frame>
        <Frame>13,14</Frame>
        <Frame>14,14</Frame>
      </SpriteAnimation>
      <SpriteAnimation name="punch_laser_Sprites" sprite="s_punch_laser" animTime="200" isLoop="true" playOnState="Pet.FlyingShoot|Pet.IdleShoot">
        <Frame>20,0</Frame>
        <Frame>21,0</Frame>
      </SpriteAnimation>
    </Animations>
    <StateMachines>
      <StateMachine name="Pet">
        <States>
          <State name="Idle" />
          <State name="Walk" />
          <State name="IdleShoot" />
          <State name="TakeOff" />
          <State name="Fly" />
          <State name="FlyingShoot" />
          <State name="Land" />
        </States>
        <Transitions>
          <Transition to="Idle" from="Walk|Land|FlyingShoot|IdleShoot">
            <Condition type="and">
              <CompareCustomVariable operatorType="Less" VariableNameToCompare="PunchDelay">0.0</CompareCustomVariable>
              <CompareCustomVariable VariableNameToCompare="PetFlyWalk.IsWalking">false</CompareCustomVariable>
              <CompareCustomVariable VariableNameToCompare="PetFlyWalk.IsPunching">false</CompareCustomVariable>
              <CompareCustomVariable VariableNameToCompare="PetFlyWalk.IsFlying">false</CompareCustomVariable>
            </Condition>
          </Transition>
          <Transition to="Walk" from="Idle|Land">
            <Condition type="and">
              <CompareCustomVariable VariableNameToCompare="PetFlyWalk.IsWalking">true</CompareCustomVariable>
              <CompareCustomVariable VariableNameToCompare="PetFlyWalk.IsPunching">false</CompareCustomVariable>
              <CompareCustomVariable VariableNameToCompare="PetFlyWalk.IsFlying">false</CompareCustomVariable>
            </Condition>
          </Transition>
          <Transition to="IdleShoot" from="Idle|Walk|FlyingShoot">
            <Condition type="and">
              <CompareCustomVariable VariableNameToCompare="PetFlyWalk.IsPunching">true</CompareCustomVariable>
              <CompareCustomVariable VariableNameToCompare="PetFlyWalk.IsFlying">false</CompareCustomVariable>
            </Condition>
          </Transition>
          <Transition to="FlyingShoot" from="Fly|Land|IdleShoot|TakeOff">
            <Condition type="and">
              <CompareCustomVariable VariableNameToCompare="PetFlyWalk.IsPunching">true</CompareCustomVariable>
              <CompareCustomVariable VariableNameToCompare="PetFlyWalk.IsFlying">true</CompareCustomVariable>
            </Condition>
          </Transition>
          <Transition to="TakeOff" from="Walk|Idle|Land">
            <Condition type="and">
              <CompareCustomVariable VariableNameToCompare="PetFlyWalk.IsPunching">false</CompareCustomVariable>
              <CompareCustomVariable VariableNameToCompare="PetFlyWalk.IsLanding">false</CompareCustomVariable>
              <CompareCustomVariable VariableNameToCompare="PetFlyWalk.IsFlying">true</CompareCustomVariable>
              <CompareCustomVariable VariableNameToCompare="PetFlyWalk.IsTakeoff">true</CompareCustomVariable>
            </Condition>
          </Transition>
          <Transition to="Fly" from="TakeOff|FlyingShoot|IdleShoot">
            <Condition type="and">
              <CompareCustomVariable operatorType="Less" VariableNameToCompare="PunchDelay">0.0</CompareCustomVariable>
              <CompareCustomVariable VariableNameToCompare="PetFlyWalk.IsPunching">false</CompareCustomVariable>
              <CompareCustomVariable VariableNameToCompare="PetFlyWalk.IsLanding">false</CompareCustomVariable>
              <CompareCustomVariable VariableNameToCompare="PetFlyWalk.IsFlying">true</CompareCustomVariable>
              <CompareCustomVariable VariableNameToCompare="PetFlyWalk.IsTakeoff">false</CompareCustomVariable>
            </Condition>
          </Transition>
          <Transition to="Land" from="Fly|Walk|Idle">
            <Condition type="and">
              <CompareCustomVariable VariableNameToCompare="PetFlyWalk.IsFlying">true</CompareCustomVariable>
              <CompareCustomVariable VariableNameToCompare="PetFlyWalk.IsLanding">true</CompareCustomVariable>
              <CompareCustomVariable VariableNameToCompare="PetFlyWalk.IsPunching">false</CompareCustomVariable>
            </Condition>
          </Transition>
        </Transitions>
      </StateMachine>
      <StateMachine name="PetPunch">
        <States>
          <State name="True" />
          <State name="False" />
        </States>
        <Transitions>
          <Transition to="True" from="False">
            <Condition>
              <CompareCustomVariable VariableNameToCompare="PetFlyWalk.IsPunching">true</CompareCustomVariable>
            </Condition>
          </Transition>
          <Transition to="False" from="True">
            <Condition>
              <CompareCustomVariable VariableNameToCompare="PetFlyWalk.IsPunching">false</CompareCustomVariable>
            </Condition>
          </Transition>
        </Transitions>
      </StateMachine>
      <StateMachine name="Motion">
        <States>
          <State name="Idle" />
          <State name="Move" />
          <State name="Jump" />
          <State name="Fall" />
        </States>
        <Transitions>
          <Transition to="Idle" from="Fall|Move|Jump">
            <Condition type="and">
              <IsVariableBool name="onGround">true</IsVariableBool>
              <IsVariableFloat name="speed.length" operator="Less" abs="true">0.1</IsVariableFloat>
            </Condition>
          </Transition>
          <Transition to="Move" from="Jump|Fall|Idle">
            <Condition type="and">
              <IsVariableBool name="onGround">true</IsVariableBool>
              <IsVariableFloat name="speed.length" operator="Greater" abs="true">0.1</IsVariableFloat>
            </Condition>
          </Transition>
          <Transition to="Jump" from="Idle|Move|Fall">
            <Condition type="and">
              <IsVariableBool name="onGround">false</IsVariableBool>
              <IsVariableFloat name="speed.y" operator="Less">-0.1</IsVariableFloat>
            </Condition>
          </Transition>
          <Transition to="Fall" from="Jump|Idle|Move">
            <Condition type="and">
              <IsVariableBool name="onGround">false</IsVariableBool>
              <IsVariableFloat name="speed.y" operator="Greater">0.1</IsVariableFloat>
            </Condition>
          </Transition>
        </Transitions>
      </StateMachine>
    </StateMachines>
    <ParticleSystems>
      <ParticleSystem name="ps_doubleJumpCoulds">
        <Emitter>
          <Set name="lifeTime">1.1</Set>
          <Set name="infParticles">true</Set>
          <Set name="checkParticleNumToEmit">true</Set>
          <Set name="particlesPerEmission">3</Set>
          <Set name="particlesToEmit">3</Set>
        </Emitter>
        <Particle>
          <Select name="sprite" input="particleIndex">
            <Item>"s_doubleJumpSideCloud"</Item>
            <Item>"s_doubleJumpSideCloud"</Item>
            <Item>"s_doubleJumpDownCloud"</Item>
          </Select>
          <Select name="offset" input="particleIndex">
            <Item>0, 0</Item>
            <Item>0, 0</Item>
            <Item>0, -10</Item>
          </Select>
          <Set name="interpolateVelocity">true</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, 2, 2</KeyFrame>
          </Curve>
          <Set name="lifeTime">1</Set>
          <Select name="initialVelocity" input="particleIndex">
            <Item>-40, 0</Item>
            <Item>40, 0</Item>
            <Item>0, 40</Item>
          </Select>
          <Set name="finalVelocity">0, 0</Set>
          <Select name="flipX" input="particleIndex">
            <Item>false</Item>
            <Item>true</Item>
            <Item>false</Item>
          </Select>
        </Particle>
      </ParticleSystem>
      <ParticleSystem name="ps_doubleJumpLines">
        <Emitter>
          <Set name="lifeTime">1.1</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_doubleJumpLines</Set>
          <Set name="renderAlignment">DOWN_CENTER</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.6</KeyFrame>
            <KeyFrame>1, 1, 2.2</KeyFrame>
          </Curve>
          <Set name="lifeTime">0.5</Set>
          <Set name="initialVelocity">0, 60</Set>
        </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">PREMULTIPLIED_ALPHA</Set>
          <Curve name="initialAlpha">
            <KeyFrame>0, 1</KeyFrame>
            <KeyFrame>1, 0</KeyFrame>
          </Curve>
          <Set name="lifeTime">0.3</Set>
          <Random name="initialAngle" min="0" max="360" />
          <Set name="initialRotationRate">360</Set>
        </Particle>
      </ParticleSystem>
    </ParticleSystems>
    <RenderOptions>
      <Default>
        <Set name="PlayDefaultPunchAudio">true</Set>
        <Set name="DefaultPunchSound">audio/laser.wav</Set>
        <Set name="NeedRenderPet">true</Set>
        <Set name="PetOffsetDuplication">-36,0</Set>
        <Set name="UsePetForceFaceTime">false</Set>
        <Set name="HideParticlesOnTransform">false</Set>
        <Set name="ShouldHover">true</Set>
        <Set name="IgnoreDefaultDamagedTileEffect">true</Set>
      </Default>
    </RenderOptions>
  </Data>
  <RenderRules>
    <Update>

      <ArithmethicOperation LeftHandVariableName="PunchDelay" RightHandVariableName="DeltaTime" OperationType="Substract"/>

      <StopIf>
        <IsZombified>true</IsZombified>
        <IsWearing slot="SHIRT">ITEM_ID_TACTICAL_STEALTH_DEVICE</IsWearing>
        <IsVariableBool name="isMannequin">true</IsVariableBool>
        <IsVariableBool name="isBattleLeash">true</IsVariableBool>
      </StopIf>
      <AvatarTransform class="Face" onState="PetPunch.True">
        <Set name="face">NORMAL</Set>
      </AvatarTransform>
      <AvatarTransform class="FootPosition" onState="Motion.Idle|Motion.Move">
        <Set name="foot1dy">0</Set>
        <Set name="foot2dy">0</Set>
        <Set name="foot1y">0</Set>
        <Set name="foot2y">0</Set>
      </AvatarTransform>
      <AvatarTransform class="ArmAngle" onState="Motion.Move">
        <Set name="armName">arm2Angle</Set>
        <Set name="armAngle">225</Set>
      </AvatarTransform>
      <AvatarTransform class="ArmAngle" onState="Motion.Move">
        <Set name="armName">arm1Angle</Set>
        <Set name="armAngle">225</Set>
      </AvatarTransform>
    </Update>
    <OnPunchStart>
      <ArithmethicOperation LeftHandVariableName="PunchDelay" RightHandVariableName="1.0" OperationType="Set"/>
    </OnPunchStart>
    <RenderFrontpack>
      <Group>
        <StopIf>
          <IsFacingLeft>false</IsFacingLeft>
        </StopIf>
        <SpriteRender name="s_medalFlipped" offset="0,0" alignment="DOWN_CENTER" />
      </Group>
      <Group>
        <StopIf>
          <IsFacingLeft>true</IsFacingLeft>
        </StopIf>
        <SpriteRender name="s_medal" offset="0,0" alignment="DOWN_CENTER" />
      </Group>
    </RenderFrontpack>
    <RenderBackpack>
      <SpriteRender name="s_cape" offset="0,-16" />
    </RenderBackpack>
    <RenderPet>
      <SpriteRender name="s_pet" offset="0,0" alignment="DOWN_CENTER" />
      <StopIf>
        <IsZombified>true</IsZombified>
      </StopIf>
      <SpriteRender name="s_punch_plasma" offset="13,-15" scale="1,0.5" onState="PetPunch.True" blend="PREMULTIPLIED_ALPHA" stretchToTarget="true" alignmentLeft="LEFT_CENTER" alignmentRight="RIGHT_CENTER" drawShadow="false" flip="1,0" />
      <SpriteRender name="s_punch_laser" offset="13,-15" scale="1,0.5" onState="PetPunch.True" blend="PREMULTIPLIED_ALPHA" stretchToTarget="true" alignmentLeft="LEFT_CENTER" alignmentRight="RIGHT_CENTER" drawShadow="false" flip="1,0" />
    </RenderPet>
    <UpdatePet>
      <ContextUpdate type="SetPetFlyWalk">
        <Set name="PetFlyWalk.LandingSpeed">100</Set>
        <Set name="PetFlyWalk.WalkSpeed">400</Set>
        <Set name="PetFlyWalk.FlySpeed">3000</Set>
        <Set name="PetFlyWalk.WarpDistance">800</Set>
        <Set name="PetFlyWalk.FlightDuration">2</Set>
        <Set name="PetFlyWalk.LandingTimeStart">0.2</Set>
        <Set name="PetFlyWalk.FlightTimeStart">1.9</Set>
        <Set name="PetFlyWalk.FlyingOffset">35,0</Set>
        <Set name="PetFlyWalk.WalkOffset">35,0</Set>
      </ContextUpdate>
    </UpdatePet>
    <AddClothingParticles>
      <ParticleSystemUpdate name="ps_doubleJumpCoulds" onAction="JUMPDOUBLE" />
      <ParticleSystemUpdate name="ps_doubleJumpLines" onAction="JUMPDOUBLE" />
    </AddClothingParticles>
  </RenderRules>
</ItemRenderer>