freeslot("S_PLAY_SHELLING0","S_SNKOOPASHELLRIDEABLE2","MT_KOOPASHELL2")
states[S_PLAY_SHELLING] = {
	sprite = SPR_PLAY,
	frame = FF_ANIMATE|SPR2_GRND,
	tics = -1,
	var1 = 5,
	var2 = 2,
	nextstate = S_PLAY_SHELLING
}
states[S_PLAY_SHELLING2] = {
	sprite = SPR_PLAY,
	frame = SPR2_GRND,
	tics = 0,
	action = A_SetObjectTypeState,
	var1 = S_NULL,
	var2 = MT_KOOPASHELL2,
	nextstate = S_PLAY_SHELLING3
}
states[S_PLAY_SHELLING3] = {
	sprite = SPR_PLAY,
	frame = SPR2_TAL6|FF_ANIMATE,
	tics = 0,
	nextstate = S_PLAY_SHELLING4
}
states[S_PLAY_SHELLING4] = {
	sprite = SPR_PLAY,
	frame = SPR2_TAL6|FF_ANIMATE,
	tics = 10,
	var1 = 5,
	var2 = 2,
	nextstate = S_PLAY_SHELLING5
}
states[S_PLAY_SHELLING5] = {
	sprite = SPR_PLAY,
	frame = F|SPR2_TAL6,
	tics = 1,
	nextstate = S_PLAY_JUMP
}
addHook("PlayerThink",function(player)

   if not mapheaderinfo[gamemap].fireflowerspecial then return end
   
   if player.shelling == nil
    then player.shelling = false
	 end
   
     if player.mo.state == S_PLAY_SHELLING
       then player.shelling = true
		end
		
		if player.mo.state ~= S_PLAY_SHELLING
       then player.shelling = false
		end
		 
		 if player.shelling == false
		 player.thrustfactor = skins[player.mo.skin].thrustfactor*1
	      player.mo.spriteyoffset = 1*FRACUNIT
	        end
	   
	   if player.shelling == true and player.firefloweron == true 	   	   
	   player.pflags = $|PF_JUMPSTASIS
	   player.pflags = $1 & ~PF_JUMPED
      player.thrustfactor = skins[player.mo.skin].thrustfactor*32
	   player.mo.spriteyoffset = 10*FRACUNIT
	   
	  elseif
	  player.shelling == true and player.firefloweron == false
	  player.pflags = $|PF_JUMPSTASIS
	   player.pflags = $1 & ~PF_JUMPED
      player.thrustfactor = skins[player.mo.skin].thrustfactor*2
	   player.mo.spriteyoffset = 10*FRACUNIT
   
end
	
 if not player.shelling then return end
 
 if player.holdingdownspace == nil
    then player.holdingdownspace = 0
	end
	
	if (player.cmd.buttons & BT_JUMP)
	  then player.holdingdownspace = $1 + 1
	  else
	  player.holdingdownspace = 0
	  end
	  
	  if player.timeshelling == nil
       then player.timeshelling = 0
	    end
		
		if player.mo.state == S_PLAY_SHELLING
       then player.timeshelling = $1 + 1
	    end
 
  if (player.cmd.buttons & BT_JUMP)
	then player.mo.state = S_PLAY_SHELLING2
	player.pflags = $1 & ~PF_THOKKED
	P_SetObjectMomZ(player.mo, 15*FU, false)
	
	end
	end)
	

addHook("PlayerThink",function(player)
	
	if player.mo.state == S_PLAY_SHELLING5
     player.pflags = $|PF_JUMPED
	 
	 
 end
  end)
 
 addHook("PlayerThink",function(player)
	
	if player.shelling ~= true then return end
	if player.firefloweron == true
	if player.speed <= 40 then return end
	 local ring =  P_SpawnPlayerMissile(player.mo, MT_FIREFLOWEREFFECT2)
	local ring =  P_SpawnPlayerMissile(player.mo, MT_FIREFLOWEREFFECT3)
	 
	     end
	      end)